mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2026-01-28 05:53:14 +00:00
The driver's error recovery reset sequence can take many seconds to
complete and only the critical sections are protected by rtnl_lock.
A recent change has introduced a regression in this sequence.
bnxt_remove_one() may be called while the recovery is in progress.
Normally, unregister_netdev() would cause bnxt_close_nic() to be
called and this would cause the error recovery to safely abort
with the BNXT_STATE_ABORT_ERR flag set in bnxt_close_nic().
Recently, we added bnxt_reinit_after_abort() to allow the user to
reopen the device after an aborted recovery. This causes the
regression in the scenario described above because we would
attempt to re-open even after the netdev has been unregistered.
Fix it by checking the netdev reg_state in
bnxt_reinit_after_abort() and abort if it is unregistered.
Fixes:
|
||
|---|---|---|
| .. | ||
| bnxt_coredump.h | ||
| bnxt_dcb.c | ||
| bnxt_dcb.h | ||
| bnxt_debugfs.c | ||
| bnxt_debugfs.h | ||
| bnxt_devlink.c | ||
| bnxt_devlink.h | ||
| bnxt_dim.c | ||
| bnxt_ethtool.c | ||
| bnxt_ethtool.h | ||
| bnxt_fw_hdr.h | ||
| bnxt_hsi.h | ||
| bnxt_nvm_defs.h | ||
| bnxt_sriov.c | ||
| bnxt_sriov.h | ||
| bnxt_tc.c | ||
| bnxt_tc.h | ||
| bnxt_ulp.c | ||
| bnxt_ulp.h | ||
| bnxt_vfr.c | ||
| bnxt_vfr.h | ||
| bnxt_xdp.c | ||
| bnxt_xdp.h | ||
| bnxt.c | ||
| bnxt.h | ||
| Makefile | ||