diff options
author | 2016-12-20 21:15:36 +0000 | |
---|---|---|
committer | 2016-12-20 21:15:36 +0000 | |
commit | f4dec7a72f37f1d21e2f6a9f6949cc20729ace5c (patch) | |
tree | c7a6dfbc04c84c3d1374096a4661f4559b449302 | |
parent | Tweak generated .c output so switch statements always have a (diff) | |
download | wireguard-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.c | 14 | ||||
-rw-r--r-- | sys/kern/uipc_socket.c | 22 |
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); |