Panic in bpf, maybe related to if_xl

Craig Rodrigues rodrigc at crodrigues.org
Wed Jul 13 15:47:01 GMT 2005


On Wed, Jul 13, 2005 at 12:51:53PM +0100, Robert Watson wrote:
> It looks like if_xl is not properly acquiring Giant when entering the 
> network stack when running with debug.mpsafenet=0.  It should be calling 
> NET_LOCK_GIANT() in the task queue before calling if_input().

Gleb Smirnoff provided me with this patch which I am testing now.
Things seem better......


Index: if_xl.c
===================================================================
RCS file: /home/ncvs/src/sys/pci/if_xl.c,v
retrieving revision 1.190
diff -u -r1.190 if_xl.c
--- if_xl.c	10 Jun 2005 16:49:23 -0000	1.190
+++ if_xl.c	13 Jul 2005 13:27:36 -0000
@@ -2100,9 +2100,11 @@
 {
 	struct xl_softc *sc = (struct xl_softc *)arg;
 
+	NET_LOCK_GIANT();
 	XL_LOCK(sc);
 	xl_rxeof(sc);
 	XL_UNLOCK(sc);
+	NET_UNLOCK_GIANT();
 }
 
 /*



-- 
Craig Rodrigues        
rodrigc at crodrigues.org


More information about the freebsd-current mailing list