summaryrefslogtreecommitdiffstats
path: root/sys/netinet/raw_ip.c
diff options
context:
space:
mode:
authormpi <mpi@openbsd.org>2017-11-20 10:35:24 +0000
committermpi <mpi@openbsd.org>2017-11-20 10:35:24 +0000
commit94334c667cb14a4cfacff059c4e2da21206ed658 (patch)
treef8289e1c9810f75b425caae8fcd133de0f51a6f9 /sys/netinet/raw_ip.c
parentRemove duplicated code working around the fact that ifpromisc() required (diff)
downloadwireguard-openbsd-94334c667cb14a4cfacff059c4e2da21206ed658.tar.xz
wireguard-openbsd-94334c667cb14a4cfacff059c4e2da21206ed658.zip
Sprinkle some NET_ASSERT_LOCKED(), const and co to prepare running
pr_input handlers without KERNEL_LOCK(). ok visa@
Diffstat (limited to 'sys/netinet/raw_ip.c')
-rw-r--r--sys/netinet/raw_ip.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/sys/netinet/raw_ip.c b/sys/netinet/raw_ip.c
index 775b8a32ed4..d969c5ee66c 100644
--- a/sys/netinet/raw_ip.c
+++ b/sys/netinet/raw_ip.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: raw_ip.c,v 1.105 2017/11/02 14:01:18 florian Exp $ */
+/* $OpenBSD: raw_ip.c,v 1.106 2017/11/20 10:35:24 mpi Exp $ */
/* $NetBSD: raw_ip.c,v 1.25 1996/02/18 18:58:33 christos Exp $ */
/*
@@ -128,6 +128,7 @@ rip_input(struct mbuf **mp, int *offp, int proto, int af)
KASSERT(af == AF_INET);
ripsrc.sin_addr = ip->ip_src;
+ NET_ASSERT_LOCKED();
TAILQ_FOREACH(inp, &rawcbtable.inpt_queue, inp_queue) {
if (inp->inp_socket->so_state & SS_CANTRCVMORE)
continue;
@@ -512,10 +513,11 @@ rip_attach(struct socket *so, int proto)
if (proto < 0 || proto >= IPPROTO_MAX)
return EPROTONOSUPPORT;
- if ((error = soreserve(so, rip_sendspace, rip_recvspace)) ||
- (error = in_pcballoc(so, &rawcbtable))) {
+ if ((error = soreserve(so, rip_sendspace, rip_recvspace)))
+ return error;
+ NET_ASSERT_LOCKED();
+ if ((error = in_pcballoc(so, &rawcbtable)))
return error;
- }
inp = sotoinpcb(so);
inp->inp_ip.ip_p = proto;
return 0;