> From: Intel-wired-lan <intel-wired-lan-boun...@osuosl.org> On Behalf Of > Francesco Ruggeri > Sent: Thursday, July 2, 2020 3:39 PM > To: linux-kernel@vger.kernel.org; net...@vger.kernel.org; intel-wired- > l...@lists.osuosl.org; k...@kernel.org; da...@davemloft.net; Kirsher, Jeffrey > T <jeffrey.t.kirs...@intel.com>; frugg...@arista.com > Subject: [Intel-wired-lan] [PATCH v2] igb: reinit_locked() should be called > with > rtnl_lock > > We observed two panics involving races with igb_reset_task. > The first panic is caused by this race condition: > > kworker reboot -f > > igb_reset_task > igb_reinit_locked > igb_down > napi_synchronize > __igb_shutdown > igb_clear_interrupt_scheme > igb_free_q_vectors > igb_free_q_vector > adapter->q_vector[v_idx] = NULL; > napi_disable > Panics trying to access > adapter->q_vector[v_idx].napi_state > > The second panic (a divide error) is caused by this race: > > kworker reboot -f tx packet > > igb_reset_task > __igb_shutdown > rtnl_lock() > ... > igb_clear_interrupt_scheme > igb_free_q_vectors > adapter->num_tx_queues = 0 > ... > rtnl_unlock() > rtnl_lock() > igb_reinit_locked > igb_down > igb_up > netif_tx_start_all_queues > dev_hard_start_xmit > igb_xmit_frame > igb_tx_queue_mapping > Panics on > r_idx % adapter->num_tx_queues > > This commit applies to igb_reset_task the same changes that > were applied to ixgbe in commit 2f90b8657ec9 ("ixgbe: this patch > adds support for DCB to the kernel and ixgbe driver"), > commit 8f4c5c9fb87a ("ixgbe: reinit_locked() should be called with > rtnl_lock") and commit 88adce4ea8f9 ("ixgbe: fix possible race in > reset subtask"). > > v2: add fix for second race condition above. > > Signed-off-by: Francesco Ruggeri <frugg...@arista.com> > > --- > drivers/net/ethernet/intel/igb/igb_main.c | 9 +++++++++ > 1 file changed, 9 insertions(+) Tested-by: Aaron Brown <aaron.f.br...@intel.com>