| Message ID | 20260928134121.826-1-getshell@seu.edu.cn |
|---|---|
| State | Changes Requested |
| Headers | show |
| Series | [net] net: e100: cancel timeout work during removal | expand |
> -----Original Message----- > From: Hongyan Xu <getshell@seu.edu.cn> > Sent: Monday, September 28, 2026 3:41 PM > To: Nguyen, Anthony L <anthony.l.nguyen@intel.com>; Kitszel, > Przemyslaw <przemyslaw.kitszel@intel.com> > Cc: andrew+netdev@lunn.ch; davem@davemloft.net; edumazet@kernel.org; > kuba@kernel.org; pabeni@redhat.com; intel-wired-lan@lists.osuosl.org; > netdev@vger.kernel.org; linux-kernel@vger.kernel.org; > jianhao.xu@seu.edu.cn; Hongyan Xu <getshell@seu.edu.cn> > Subject: [PATCH net] net: e100: cancel timeout work during removal > > Transmit timeout and command submission paths can queue > tx_timeout_task. > The worker accesses the MMIO mapping and netdev private state, but > device removal releases both without draining a pending instance. > > Cancel the work after unregister_netdev(), when the network stack can > no longer publish it and after any RTNL serialization used by the > worker has completed. > > Fixes: 2acdb1e05c1a ("[PATCH] e100: Execute tx_timeout task outside > interrupt context") > Signed-off-by: Hongyan Xu <getshell@seu.edu.cn> > --- > drivers/net/ethernet/intel/e100.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/net/ethernet/intel/e100.c > b/drivers/net/ethernet/intel/e100.c > index 29960762e64a..710c2c30d9ed 100644 > --- a/drivers/net/ethernet/intel/e100.c > +++ b/drivers/net/ethernet/intel/e100.c > @@ -2988,6 +2988,7 @@ static void e100_remove(struct pci_dev *pdev) > if (netdev) { > struct nic *nic = netdev_priv(netdev); > unregister_netdev(netdev); > + cancel_work_sync(&nic->tx_timeout_task); > e100_free(nic); > pci_iounmap(pdev, nic->csr); > dma_pool_destroy(nic->cbs_pool); > -- > 2.50.1.windows.1 Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
diff --git a/drivers/net/ethernet/intel/e100.c b/drivers/net/ethernet/intel/e100.c index 29960762e64a..710c2c30d9ed 100644 --- a/drivers/net/ethernet/intel/e100.c +++ b/drivers/net/ethernet/intel/e100.c @@ -2988,6 +2988,7 @@ static void e100_remove(struct pci_dev *pdev) if (netdev) { struct nic *nic = netdev_priv(netdev); unregister_netdev(netdev); + cancel_work_sync(&nic->tx_timeout_task); e100_free(nic); pci_iounmap(pdev, nic->csr); dma_pool_destroy(nic->cbs_pool);
Transmit timeout and command submission paths can queue tx_timeout_task. The worker accesses the MMIO mapping and netdev private state, but device removal releases both without draining a pending instance. Cancel the work after unregister_netdev(), when the network stack can no longer publish it and after any RTNL serialization used by the worker has completed. Fixes: 2acdb1e05c1a ("[PATCH] e100: Execute tx_timeout task outside interrupt context") Signed-off-by: Hongyan Xu <getshell@seu.edu.cn> --- drivers/net/ethernet/intel/e100.c | 1 + 1 file changed, 1 insertion(+)