mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
cxgbe(4): Do not report link state change during interface detach.
This fixes a panic when multiple VIs are configured on an interface and only the non-primary VI is up at the time of driver detach. The problem was that the driver would queue a link state change notification for an interface about to be freed. To reproduce the panic, add "hw.cxgbe.num_vis=2" to loader.conf and # kldload if_cxgbe # ifconfig vcc0 up # devctl detach t6nex0 trap 0x9, rip = 0xffffffff8107db70, rsp = 0xfffffe0055263d60, rbp = 0xfffffe0055263dd0 taskqueue_run_locked() at taskqueue_run_locked+0x2a0/frame 0xfffffe0055263dd0 taskqueue_run() at taskqueue_run+0x72/frame 0xfffffe0055263df0 taskqueue_swi_run() at taskqueue_swi_run+0x18/frame 0xfffffe0055263e10 intr_event_execute_handlers() at intr_event_execute_handlers+0x249/frame 0xfffffe0055263e50 ithread_execute_handlers() at ithread_execute_handlers+0x9e/frame 0xfffffe0055263e70 Reviewed by: jhb Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D45864 (cherry picked from commit dc20d49aa939caea365cbdf0341b00de69253be4)
This commit is contained in:
parent
0d7e2e14ba
commit
60bf442ee2
1 changed files with 1 additions and 1 deletions
|
|
@ -12227,7 +12227,7 @@ t4_os_link_changed(struct port_info *pi)
|
|||
|
||||
for_each_vi(pi, v, vi) {
|
||||
ifp = vi->ifp;
|
||||
if (ifp == NULL)
|
||||
if (ifp == NULL || IS_DETACHING(vi))
|
||||
continue;
|
||||
|
||||
if (lc->link_ok) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue