Module Name: src Committed By: snj Date: Sat Apr 4 18:01:25 UTC 2009
Modified Files: src/sys/net [netbsd-5]: if_bridge.c Log Message: Pull up following revision(s) (requested by bouyer in ticket #660): sys/net/if_bridge.c: revision 1.66 Fixes from Masao Uebayashi To generate a diff of this commit: cvs rdiff -u -r1.62.6.1 -r1.62.6.2 src/sys/net/if_bridge.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/if_bridge.c diff -u src/sys/net/if_bridge.c:1.62.6.1 src/sys/net/if_bridge.c:1.62.6.2 --- src/sys/net/if_bridge.c:1.62.6.1 Sat Apr 4 18:00:03 2009 +++ src/sys/net/if_bridge.c Sat Apr 4 18:01:25 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: if_bridge.c,v 1.62.6.1 2009/04/04 18:00:03 snj Exp $ */ +/* $NetBSD: if_bridge.c,v 1.62.6.2 2009/04/04 18:01:25 snj Exp $ */ /* * Copyright 2001 Wasabi Systems, Inc. @@ -80,7 +80,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.62.6.1 2009/04/04 18:00:03 snj Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_bridge.c,v 1.62.6.2 2009/04/04 18:01:25 snj Exp $"); #include "opt_bridge_ipf.h" #include "opt_inet.h" @@ -419,8 +419,6 @@ /* Tear down the routing table. */ bridge_rtable_fini(sc); - - softint_disestablish(sc->sc_softintr); free(sc, M_DEVBUF); @@ -1320,10 +1318,13 @@ struct ether_header *eh; int s; - if ((sc->sc_if.if_flags & IFF_RUNNING) == 0) + mutex_enter(softnet_lock); + if ((sc->sc_if.if_flags & IFF_RUNNING) == 0) { + mutex_exit(softnet_lock); return; + } - s = splbio(); + s = splnet(); while (1) { IFQ_POLL(&sc->sc_if.if_snd, m); if (m == NULL) @@ -1444,6 +1445,7 @@ bridge_enqueue(sc, dst_if, m, 1); } splx(s); + mutex_exit(softnet_lock); } /*