diff options
author | phk <phk@FreeBSD.org> | 2004-11-17 08:01:10 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2004-11-17 08:01:10 +0000 |
commit | 313ccfcf9e23e29fc79adcefe9b9e1b52f7643ff (patch) | |
tree | 58ad6e043341e4831c8010d803a24ce8c0b279b1 /sys/kern/sys_socket.c | |
parent | 3dab450860a416318f4975a44933d133725c58bb (diff) | |
download | FreeBSD-src-313ccfcf9e23e29fc79adcefe9b9e1b52f7643ff.zip FreeBSD-src-313ccfcf9e23e29fc79adcefe9b9e1b52f7643ff.tar.gz |
Push Giant down through select and poll.
Don't grab Giant in the upper syscall/wrapper code
NET_LOCK_GIANT in the socket code (sockets/fifos).
mtx_lock(&Giant) in the vnode code.
Devfs grabs Giant if the driver is marked as needing Giant.
Diffstat (limited to 'sys/kern/sys_socket.c')
-rw-r--r-- | sys/kern/sys_socket.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/kern/sys_socket.c b/sys/kern/sys_socket.c index f40d230..4a7911d 100644 --- a/sys/kern/sys_socket.c +++ b/sys/kern/sys_socket.c @@ -223,8 +223,10 @@ soo_poll(fp, events, active_cred, td) struct socket *so = fp->f_data; int error; + NET_LOCK_GIANT(); error = (so->so_proto->pr_usrreqs->pru_sopoll) (so, events, fp->f_cred, td); + NET_UNLOCK_GIANT(); return (error); } |