make swapon() MPSAFE (will adjust syscalls.master later)

This commit is contained in:
dillon 2001-08-31 22:15:37 +00:00
parent af4e4157df
commit 4609145389

View File

@ -183,6 +183,9 @@ struct swapon_args {
}; };
#endif #endif
/*
* MPSAFE
*/
/* ARGSUSED */ /* ARGSUSED */
int int
swapon(p, uap) swapon(p, uap)
@ -194,21 +197,25 @@ swapon(p, uap)
struct nameidata nd; struct nameidata nd;
int error; int error;
mtx_lock(&Giant);
error = suser(p); error = suser(p);
if (error) if (error)
return (error); goto done2;
/* /*
* Swap metadata may not fit in the KVM if we have physical * Swap metadata may not fit in the KVM if we have physical
* memory of >1GB. * memory of >1GB.
*/ */
if (swap_zone == NULL) if (swap_zone == NULL) {
return (ENOMEM); error = ENOMEM;
goto done2;
}
NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, uap->name, p); NDINIT(&nd, LOOKUP, FOLLOW, UIO_USERSPACE, uap->name, p);
error = namei(&nd); error = namei(&nd);
if (error) if (error)
return (error); goto done2;
NDFREE(&nd, NDF_ONLY_PNBUF); NDFREE(&nd, NDF_ONLY_PNBUF);
vp = nd.ni_vp; vp = nd.ni_vp;
@ -226,7 +233,8 @@ swapon(p, uap)
if (error) if (error)
vrele(vp); vrele(vp);
done2:
mtx_unlock(&Giant);
return (error); return (error);
} }