Messages in this thread | | | From | Francesco Ruggeri <> | Date | Thu, 2 Jul 2020 12:35:05 -0700 | Subject | Re: [PATCH] igb: reinit_locked() should be called with rtnl_lock |
| |
> Do not worry about the other Intel drivers, I have our developers looking at each of our drivers for the locking issue. > > @David Miller - I am picking up this patch
There seems to be a second race, independent from the original one, that results in a divide error:
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
Using in igb_reset_task a logic similar to the one in ixgbe_reset_subtask (bailing if __IGB_DOWN or __IGB_RESETTING is set) seems to avoid the panic. That logic was first introduced in ixgbe as part of commit 2f90b8657ec ('ixgbe: this patch adds support for DCB to the kernel and ixgbe driver'). Both fixes seem to be needed.
| |