From 2e37884ff08258579d448a9a391dee3a5f12be35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 14 Mar 2006 01:07:01 +0000 Subject: [PATCH] Don't crash the kernel when getting a NULL mbuf. I can now ping the Haiku box (with the SiS 900 driver) :-) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16779 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/add-ons/kernel/network/core/core.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/network/core/core.c b/src/add-ons/kernel/network/core/core.c index 7af4126d2e..5c7cd547b2 100644 --- a/src/add-ons/kernel/network/core/core.c +++ b/src/add-ons/kernel/network/core/core.c @@ -232,7 +232,8 @@ control_net_module(const char *name, uint32 op, void *data, size_t length) } -static int32 if_thread(void *data) +static int32 +if_thread(void *data) { struct ifnet *i = (struct ifnet *)data; status_t status; @@ -243,8 +244,12 @@ static int32 if_thread(void *data) struct mbuf *mb = m_devget(buffer, status, 0, i, NULL); if (!(i->if_flags & IFF_UP)) break; - IFQ_ENQUEUE(i->devq, mb); - atomic_add(&i->if_ipackets, 1); + + if (mb != NULL) { + IFQ_ENQUEUE(i->devq, mb); + atomic_add(&i->if_ipackets, 1); + } + len = ETHER_MAX_LEN; } printf("%s: terminating if_thread\n", i->if_name);