mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
![]() IRQs are requested during driver's ndo_open() and then later
freed up in disable_interrupts() during driver unload.
A race exists where driver can set the CXGB4_FULL_INIT_DONE
flag in ndo_open() after the disable_interrupts() in driver
unload path checks it, and hence misses calling free_irq().
Fix by unregistering netdevice first and sync with driver's
ndo_open(). This ensures disable_interrupts() checks the flag
correctly and frees up the IRQs properly.
Fixes:
|
||
---|---|---|
.. | ||
clip_tbl.c | ||
clip_tbl.h | ||
cudbg_common.c | ||
cudbg_entity.h | ||
cudbg_if.h | ||
cudbg_lib.c | ||
cudbg_lib.h | ||
cudbg_lib_common.h | ||
cudbg_zlib.c | ||
cudbg_zlib.h | ||
cxgb4.h | ||
cxgb4_cudbg.c | ||
cxgb4_cudbg.h | ||
cxgb4_dcb.c | ||
cxgb4_dcb.h | ||
cxgb4_debugfs.c | ||
cxgb4_debugfs.h | ||
cxgb4_ethtool.c | ||
cxgb4_fcoe.c | ||
cxgb4_fcoe.h | ||
cxgb4_filter.c | ||
cxgb4_filter.h | ||
cxgb4_main.c | ||
cxgb4_mps.c | ||
cxgb4_ptp.c | ||
cxgb4_ptp.h | ||
cxgb4_tc_flower.c | ||
cxgb4_tc_flower.h | ||
cxgb4_tc_matchall.c | ||
cxgb4_tc_matchall.h | ||
cxgb4_tc_mqprio.c | ||
cxgb4_tc_mqprio.h | ||
cxgb4_tc_u32.c | ||
cxgb4_tc_u32.h | ||
cxgb4_tc_u32_parse.h | ||
cxgb4_thermal.c | ||
cxgb4_uld.c | ||
cxgb4_uld.h | ||
l2t.c | ||
l2t.h | ||
Makefile | ||
sched.c | ||
sched.h | ||
sge.c | ||
smt.c | ||
smt.h | ||
srq.c | ||
srq.h | ||
t4_chip_type.h | ||
t4_hw.c | ||
t4_hw.h | ||
t4_msg.h | ||
t4_pci_id_tbl.h | ||
t4_regs.h | ||
t4_tcb.h | ||
t4_values.h | ||
t4fw_api.h | ||
t4fw_version.h |