summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_socket.c
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2016-12-20 21:15:36 +0000
committermpi <mpi@openbsd.org>2016-12-20 21:15:36 +0000
commitf4dec7a72f37f1d21e2f6a9f6949cc20729ace5c (patch)
treec7a6dfbc04c84c3d1374096a4661f4559b449302 /sys/kern/uipc_socket.c
parentTweak generated .c output so switch statements always have a (diff)
downloadwireguard-openbsd-f4dec7a72f37f1d21e2f6a9f6949cc20729ace5c.tar.xz
wireguard-openbsd-f4dec7a72f37f1d21e2f6a9f6949cc20729ace5c.zip
Grab the NET_LOCK() in so{s,g}etopt(), pffasttimo() and pfslowtimo().
ok rzalamena@, bluhm@
Diffstat (limited to 'sys/kern/uipc_socket.c')
-rw-r--r--sys/kern/uipc_socket.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c
index 4503849a151..3a9d7b47982 100644
--- a/sys/kern/uipc_socket.c
+++ b/sys/kern/uipc_socket.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uipc_socket.c,v 1.169 2016/12/19 08:36:49 mpi Exp $ */
+/* $OpenBSD: uipc_socket.c,v 1.170 2016/12/20 21:15:36 mpi Exp $ */
/* $NetBSD: uipc_socket.c,v 1.21 1996/02/04 02:17:52 christos Exp $ */
/*
@@ -1555,10 +1555,10 @@ sosetopt(struct socket *so, int level, int optname, struct mbuf *m0)
if (level != SOL_SOCKET) {
if (so->so_proto && so->so_proto->pr_ctloutput) {
- s = splsoftnet();
+ NET_LOCK(s);
error = (*so->so_proto->pr_ctloutput)(PRCO_SETOPT, so,
level, optname, &m0);
- splx(s);
+ NET_UNLOCK(s);
return (error);
}
error = ENOPROTOOPT;
@@ -1702,10 +1702,10 @@ sosetopt(struct socket *so, int level, int optname, struct mbuf *m0)
struct domain *dom = so->so_proto->pr_domain;
level = dom->dom_protosw->pr_protocol;
- s = splsoftnet();
+ NET_LOCK(s);
error = (*so->so_proto->pr_ctloutput)
(PRCO_SETOPT, so, level, optname, &m0);
- splx(s);
+ NET_UNLOCK(s);
return (error);
}
error = ENOPROTOOPT;
@@ -1734,10 +1734,10 @@ sosetopt(struct socket *so, int level, int optname, struct mbuf *m0)
break;
}
if (error == 0 && so->so_proto && so->so_proto->pr_ctloutput) {
- s = splsoftnet();
+ NET_LOCK(s);
(*so->so_proto->pr_ctloutput)(PRCO_SETOPT, so,
level, optname, &m0);
- splx(s);
+ NET_UNLOCK(s);
m = NULL; /* freed by protocol */
}
}
@@ -1755,10 +1755,10 @@ sogetopt(struct socket *so, int level, int optname, struct mbuf **mp)
if (level != SOL_SOCKET) {
if (so->so_proto && so->so_proto->pr_ctloutput) {
- s = splsoftnet();
+ NET_LOCK(s);
error = (*so->so_proto->pr_ctloutput)(PRCO_GETOPT, so,
level, optname, mp);
- splx(s);
+ NET_UNLOCK(s);
return (error);
} else
return (ENOPROTOOPT);
@@ -1839,10 +1839,10 @@ sogetopt(struct socket *so, int level, int optname, struct mbuf **mp)
struct domain *dom = so->so_proto->pr_domain;
level = dom->dom_protosw->pr_protocol;
- s = splsoftnet();
+ NET_LOCK(s);
error = (*so->so_proto->pr_ctloutput)
(PRCO_GETOPT, so, level, optname, mp);
- splx(s);
+ NET_UNLOCK(s);
return (error);
}
return (ENOPROTOOPT);