summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_socket.c
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2017-05-15 13:00:10 +0000
committermpi <mpi@openbsd.org>2017-05-15 13:00:10 +0000
commit0cba34ae4a71818f2d9e48e7c207751c1b8307c5 (patch)
tree27ba573b6d8498d2ec344805406fcc9198a46d8c /sys/kern/uipc_socket.c
parentbridge_ioctl() doesn't need to call splnet(). (diff)
downloadwireguard-openbsd-0cba34ae4a71818f2d9e48e7c207751c1b8307c5.tar.xz
wireguard-openbsd-0cba34ae4a71818f2d9e48e7c207751c1b8307c5.zip
so_splicelen needs to be protected by the socket lock. We are now
safe since we're always holding the KERNEL_LOCK() but we want to move away from that. Suggested by and ok bluhm@
Diffstat (limited to 'sys/kern/uipc_socket.c')
-rw-r--r--sys/kern/uipc_socket.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index edb9618ec45..29323e8a41f 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uipc_socket.c,v 1.183 2017/05/15 12:26:00 mpi Exp $ */
+/* $OpenBSD: uipc_socket.c,v 1.184 2017/05/15 13:00:10 mpi Exp $ */
/* $NetBSD: uipc_socket.c,v 1.21 1996/02/04 02:17:52 christos Exp $ */
/*
@@ -1862,12 +1862,13 @@ sogetopt(struct socket *so, int level, int optname, struct mbuf **mp)
case SO_SPLICE:
{
off_t len;
- int s = splsoftnet();
+ int s;
+ s = solock(so);
m->m_len = sizeof(off_t);
len = so->so_sp ? so->so_sp->ssp_len : 0;
memcpy(mtod(m, off_t *), &len, sizeof(off_t));
- splx(s);
+ sounlock(s);
break;
}
#endif /* SOCKET_SPLICE */