summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authordwmalone <dwmalone@FreeBSD.org>2003-12-25 23:44:38 +0000
committerdwmalone <dwmalone@FreeBSD.org>2003-12-25 23:44:38 +0000
commit92fec55360b05480fd08cbf9db5f64ac54f23d9c (patch)
tree4a948ebeb0d3f3585de5da78d8f3d84e3da81671 /sys/kern
parentebdd5b975490667fe65edf45a6ae14839cc2c308 (diff)
downloadFreeBSD-src-92fec55360b05480fd08cbf9db5f64ac54f23d9c.zip
FreeBSD-src-92fec55360b05480fd08cbf9db5f64ac54f23d9c.tar.gz
In socket(2) we only need Giant around the call to socreate, so just
grab it there.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/uipc_syscalls.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c
index 5222bca..4c59ae8 100644
--- a/sys/kern/uipc_syscalls.c
+++ b/sys/kern/uipc_syscalls.c
@@ -112,14 +112,15 @@ socket(td, uap)
struct file *fp;
int fd, error;
- mtx_lock(&Giant);
fdp = td->td_proc->p_fd;
error = falloc(td, &fp, &fd);
if (error)
goto done2;
/* An extra reference on `fp' has been held for us by falloc(). */
+ mtx_lock(&Giant);
error = socreate(uap->domain, &so, uap->type, uap->protocol,
td->td_ucred, td);
+ mtx_unlock(&Giant);
FILEDESC_LOCK(fdp);
if (error) {
if (fdp->fd_ofiles[fd] == fp) {
@@ -138,7 +139,6 @@ socket(td, uap)
}
fdrop(fp, td);
done2:
- mtx_unlock(&Giant);
return (error);
}
OpenPOWER on IntegriCloud