Hi, Small fix for if_bridge.c. bridge_state_change() is called from taskqueue and curvnet is not set. Patch attached.
The panic:
#6 0xffffffff80d9a8c9 in trap_fatal (frame=0xfffffe01a5a998b0, eva=<value optimized out>) at /usr/src/sys/amd64/amd64/trap.c:854 #7 0xffffffff80d9ab5e in trap_pfault (frame=0xfffffe01a5a998b0, usermode=<value optimized out>) at /usr/src/sys/amd64/amd64/trap.c:676 #8 0xffffffff80d9a215 in trap (frame=0xfffffe01a5a998b0) at /usr/src/sys/amd64/amd64/trap.c:426 #9 0xffffffff80d7a8c2 in calltrap () at /usr/src/sys/amd64/amd64/exception.S:235 #10 0xffffffff81e1b767 in bridge_state_change (ifp=0x1, state=Unhandled dwarf expression opcode 0x93 ) at /usr/src/sys/modules/if_bridge/../../net/if_bridge.c:3068 #11 0xffffffff809beaa0 in taskqueue_run_locked (queue=0x20) at /usr/src/sys/kern/subr_taskqueue.c:431 #12 0xffffffff809be96a in taskqueue_run (queue=0xfffff80005192d00) at /usr/src/sys/kern/subr_taskqueue.c:450 #13 0xffffffff8093ac61 in intr_event_execute_handlers (p=<value optimized out>, ie=0xfffff80005171200) at /usr/src/sys/kern/kern_intr.c:1241 #14 0xffffffff8093b63c in ithread_loop (arg=0xfffff8000517af40) at /usr/src/sys/kern/kern_intr.c:1254
Thanks for reviewing, Nikos
Index: sys/net/if_bridge.c =================================================================== --- sys/net/if_bridge.c (revision 282651) +++ sys/net/if_bridge.c (working copy) @@ -3065,9 +3065,11 @@ bridge_state_change(struct ifnet *ifp, int state) "discarding" }; + CURVNET_SET(ifp->if_vnet); if (V_log_stp) log(LOG_NOTICE, "%s: state changed to %s on %s\n", sc->sc_ifp->if_xname, stpstates[state], ifp->if_xname); + CURVNET_RESTORE(); } /*
_______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"