if_bridge panic plus fix
Nikos Vassiliadis
nvass at gmx.com
Mon May 11 11:38:32 UTC 2015
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
-------------- next part --------------
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();
}
/*
More information about the freebsd-net
mailing list