summaryrefslogtreecommitdiffstats
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
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@
-rw-r--r--sys/kern/uipc_domain.c14
-rw-r--r--sys/kern/uipc_socket.c22
2 files changed, 18 insertions, 18 deletions
diff --git a/sys/kern/uipc_domain.c b/sys/kern/uipc_domain.c
index 34c7aa66e7f..7dd629f5e6e 100644
--- a/sys/kern/uipc_domain.c
+++ b/sys/kern/uipc_domain.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uipc_domain.c,v 1.47 2016/12/20 18:33:43 bluhm Exp $ */
+/* $OpenBSD: uipc_domain.c,v 1.48 2016/12/20 21:15:36 mpi Exp $ */
/* $NetBSD: uipc_domain.c,v 1.14 1996/02/09 19:00:44 christos Exp $ */
/*
@@ -99,8 +99,8 @@ domaininit(void)
max_linkhdr = 64;
max_hdr = max_linkhdr + max_protohdr;
- timeout_set(&pffast_timeout, pffasttimo, &pffast_timeout);
- timeout_set(&pfslow_timeout, pfslowtimo, &pfslow_timeout);
+ timeout_set_proc(&pffast_timeout, pffasttimo, &pffast_timeout);
+ timeout_set_proc(&pfslow_timeout, pfslowtimo, &pfslow_timeout);
timeout_add(&pffast_timeout, 1);
timeout_add(&pfslow_timeout, 1);
}
@@ -246,13 +246,13 @@ pfslowtimo(void *arg)
struct protosw *pr;
int i, s;
- s = splsoftnet();
+ NET_LOCK(s);
for (i = 0; (dp = domains[i]) != NULL; i++) {
for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
if (pr->pr_slowtimo)
(*pr->pr_slowtimo)();
}
- splx(s);
+ NET_UNLOCK(s);
timeout_add_msec(to, 500);
}
@@ -264,12 +264,12 @@ pffasttimo(void *arg)
struct protosw *pr;
int i, s;
- s = splsoftnet();
+ NET_LOCK(s);
for (i = 0; (dp = domains[i]) != NULL; i++) {
for (pr = dp->dom_protosw; pr < dp->dom_protoswNPROTOSW; pr++)
if (pr->pr_fasttimo)
(*pr->pr_fasttimo)();
}
- splx(s);
+ NET_UNLOCK(s);
timeout_add_msec(to, 200);
}
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);