Netdev List
 help / color / mirror / Atom feed
* [PATCH] mlxsw: pci: drain EQ tasklet during teardown
@ 2026-10-18  4:06 Jiale Yao
  2026-10-18  4:13 ` netdev-bot+sinfo
  2026-10-18 15:32 ` Ido Schimmel
  0 siblings, 2 replies; 3+ messages in thread
From: Jiale Yao @ 2026-10-18  4:06 UTC (permalink / raw)
  To: Ido Schimmel, Petr Machata, Andrew Lunn, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni, Jiri Pirko, Elad Raz,
	Scott Feldman, netdev, linux-kernel
  Cc: Jiale Yao

The EQ interrupt handler only schedules a tasklet. free_irq() prevents
another interrupt handler from running, but it does not drain a tasklet
that was queued before the IRQ was released.

The pending tasklet can access the EQ DMA buffer and queue array after
mlxsw_pci_aqs_fini() releases them. Kill it after freeing the IRQ and
before tearing down the asynchronous queues.

Fixes: eda6500a987a ("mlxsw: Add PCI bus implementation")
Signed-off-by: Jiale Yao <yaojiale02@163.com>
---
 drivers/net/ethernet/mellanox/mlxsw/pci.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/ethernet/mellanox/mlxsw/pci.c b/drivers/net/ethernet/mellanox/mlxsw/pci.c
index bfe3268dfdc1..ba66142ae333 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/pci.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/pci.c
@@ -2085,8 +2085,11 @@ static int mlxsw_pci_init(void *bus_priv, struct mlxsw_core *mlxsw_core,
 static void mlxsw_pci_fini(void *bus_priv)
 {
 	struct mlxsw_pci *mlxsw_pci = bus_priv;
+	struct mlxsw_pci_queue *q;
 
 	free_irq(pci_irq_vector(mlxsw_pci->pdev, 0), mlxsw_pci);
+	q = mlxsw_pci_eq_get(mlxsw_pci);
+	tasklet_kill(&q->u.eq.tasklet);
 	mlxsw_pci_aqs_fini(mlxsw_pci);
 	mlxsw_pci_napi_devs_fini(mlxsw_pci);
 	mlxsw_pci_fw_area_fini(mlxsw_pci);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-10-18 15:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-18  4:06 [PATCH] mlxsw: pci: drain EQ tasklet during teardown Jiale Yao
2026-10-18  4:13 ` netdev-bot+sinfo
2026-10-18 15:32 ` Ido Schimmel

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox