diff options
author | dwmalone <dwmalone@FreeBSD.org> | 2003-12-25 23:44:38 +0000 |
---|---|---|
committer | dwmalone <dwmalone@FreeBSD.org> | 2003-12-25 23:44:38 +0000 |
commit | 92fec55360b05480fd08cbf9db5f64ac54f23d9c (patch) | |
tree | 4a948ebeb0d3f3585de5da78d8f3d84e3da81671 | |
parent | ebdd5b975490667fe65edf45a6ae14839cc2c308 (diff) | |
download | FreeBSD-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.
-rw-r--r-- | sys/kern/uipc_syscalls.c | 4 |
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); } |