summaryrefslogtreecommitdiffstats
path: root/sys/net
diff options
context:
space:
mode:
authorjlemon <jlemon@FreeBSD.org>2003-03-08 22:12:32 +0000
committerjlemon <jlemon@FreeBSD.org>2003-03-08 22:12:32 +0000
commitd41507bc4f6a7c9eb260e62acc603532b6f38f0b (patch)
tree67ebc0a5265dce91d076314fbd57a9b166919c55 /sys/net
parent673c0e4fca525cd035f1f68280e36d6c7793e248 (diff)
downloadFreeBSD-src-d41507bc4f6a7c9eb260e62acc603532b6f38f0b.zip
FreeBSD-src-d41507bc4f6a7c9eb260e62acc603532b6f38f0b.tar.gz
Discard the packet if the netisr queue is null instead of panicing, for
the benefit of modules which are compiled differently than the kernel.
Diffstat (limited to 'sys/net')
-rw-r--r--sys/net/netisr.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/net/netisr.c b/sys/net/netisr.c
index 7211539..598fde4 100644
--- a/sys/net/netisr.c
+++ b/sys/net/netisr.c
@@ -146,7 +146,10 @@ netisr_dispatch(int num, struct mbuf *m)
KASSERT(!(num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs))),
("bad isr %d", num));
ni = &netisrs[num];
- KASSERT(ni->ni_queue != NULL, ("no queue for isr %d", num));
+ if (ni->ni_queue == NULL) {
+ m_freem(m);
+ return;
+ }
if (netisr_enable && mtx_trylock(&netisr_mtx)) {
isrstat.isrs_directed++;
/*
@@ -185,7 +188,10 @@ netisr_queue(int num, struct mbuf *m)
KASSERT(!(num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs))),
("bad isr %d", num));
ni = &netisrs[num];
- KASSERT(ni->ni_queue != NULL, ("no queue for isr %d", num));
+ if (ni->ni_queue == NULL) {
+ m_freem(m);
+ return (1);
+ }
isrstat.isrs_queued++;
if (!IF_HANDOFF(ni->ni_queue, m, NULL))
return (0);
OpenPOWER on IntegriCloud