On Fri, Aug 28, 2026 at 03:48:55PM +0800, Shengzhuo Wei wrote:
atl1_reset_dev_task is scheduled from the interrupt handler on PCIe
PHY link down and DMA read/write errors, and link_chg_task can be
pending from link events. atl1_remove() tears down and frees the
net_device without cancelling either work, so a work scheduled just
before unregister_netdev() can run after free_netdev() and touch the
freed adapter.
Cancel both works before unregistering the net_device, as atl2_remove()
already does for its reset and link works.
Fixes: 03662e41c7cf ("atl1: fix kernel panic in case of DMA errors")
Is 03662e41c7cf the right commit to blame?
Both works, and the unregister_netdev()/free_netdev() sequence with no
cancel, came in with the initial driver in f3cc28c79760 ("Add Attansic
L1 ethernet driver."), no?