diff options
| author | Bjoern A. Zeeb <bz@FreeBSD.org> | 2011-04-16 23:30:53 +0000 |
|---|---|---|
| committer | Bjoern A. Zeeb <bz@FreeBSD.org> | 2011-04-16 23:30:53 +0000 |
| commit | 476b5c22de2e7ea4053233950a1c77d8dc851a22 (patch) | |
| tree | b1dd4d156575de1d35eef3a402086b77c8ac69f0 /sys/kern/sys_socket.c | |
| parent | 20b3d64aec3dffb9b79a02e5eec7b18f96bf9343 (diff) | |
Notes
Diffstat (limited to 'sys/kern/sys_socket.c')
| -rw-r--r-- | sys/kern/sys_socket.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/sys/kern/sys_socket.c b/sys/kern/sys_socket.c index 564e8c6b7488..4cbae7440771 100644 --- a/sys/kern/sys_socket.c +++ b/sys/kern/sys_socket.c @@ -80,9 +80,7 @@ soo_read(struct file *fp, struct uio *uio, struct ucred *active_cred, if (error) return (error); #endif - CURVNET_SET(so->so_vnet); error = soreceive(so, 0, uio, 0, 0, 0); - CURVNET_RESTORE(); return (error); } @@ -123,7 +121,6 @@ soo_ioctl(struct file *fp, u_long cmd, void *data, struct ucred *active_cred, struct socket *so = fp->f_data; int error = 0; - CURVNET_SET(so->so_vnet); switch (cmd) { case FIONBIO: SOCK_LOCK(so); @@ -210,14 +207,18 @@ soo_ioctl(struct file *fp, u_long cmd, void *data, struct ucred *active_cred, */ if (IOCGROUP(cmd) == 'i') error = ifioctl(so, cmd, data, td); - else if (IOCGROUP(cmd) == 'r') + else if (IOCGROUP(cmd) == 'r') { + CURVNET_SET(so->so_vnet); error = rtioctl_fib(cmd, data, so->so_fibnum); - else + CURVNET_RESTORE(); + } else { + CURVNET_SET(so->so_vnet); error = ((*so->so_proto->pr_usrreqs->pru_control) (so, cmd, data, 0, td)); + CURVNET_RESTORE(); + } break; } - CURVNET_RESTORE(); return (error); } |
