can someone please let me know what this crash means?

Robert Watson rwatson at FreeBSD.org
Sun Nov 13 11:31:30 PST 2005


On Sun, 13 Nov 2005, Jason wrote:

> I am running ipfw on this box and do have $fwcmd add divert natd all 
> from any to any via fxp0
>
> hmm, I guess its time to upgrade to 6.0?

The attached untested patch will most likely prevent the bug from 
recurring by eliminating parallelism between the ip_input() call from the 
divert socket and other ip_input() processing in the netisr, as it defers 
that processing to the netisr.  However, it won't fix the underlying bug, 
which I'll keep looking for, and needs to be fixed in order to support 
net.isr.direct and various other future plans for network stack behavior. 
I'll see if I can dig someone up to test ipdivert changes, since I'm not 
set up to test them here easily currently.

Thanks,

Robert N M Watson

Index: ip_divert.c
===================================================================
RCS file: /home/ncvs/src/sys/netinet/ip_divert.c,v
retrieving revision 1.113
diff -u -r1.113 ip_divert.c
--- ip_divert.c	13 May 2005 11:44:37 -0000	1.113
+++ ip_divert.c	13 Nov 2005 19:27:32 -0000
@@ -61,6 +61,7 @@
  #include <vm/uma.h>

  #include <net/if.h>
+#include <net/netisr.h>
  #include <net/route.h>

  #include <netinet/in.h>
@@ -378,7 +379,7 @@
  		SOCK_UNLOCK(so);
  #endif
  		/* Send packet to input processing */
-		ip_input(m);
+		netisr_queue(NETISR_IP, m);
  	}

  	return error;


More information about the freebsd-stable mailing list