[PATCH net] net: fealnx: Fix potential use-after-free during removal
From: Guangshuo Li
Date: Wed Nov 11 2026 - 07:49:31 EST
Removing an active device frees its descriptor rings before
unregister_netdev() calls ndo_stop. The stop callback then reads the
freed rings to unmap and release their skbs.
Unregister the netdev while the rings and registers are still available.
This issue was found by our static analysis tool under development.
Fixes: 8f1482080104 ("eth: fealnx: bring back this old driver")
Signed-off-by: Guangshuo Li <liguangshuo@xxxxxxxxxxxxxxx>
---
drivers/net/ethernet/fealnx.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/fealnx.c b/drivers/net/ethernet/fealnx.c
index bdc38aac5850..68194c9ef332 100644
--- a/drivers/net/ethernet/fealnx.c
+++ b/drivers/net/ethernet/fealnx.c
@@ -682,11 +682,11 @@ static void fealnx_remove_one(struct pci_dev *pdev)
if (dev) {
struct netdev_private *np = netdev_priv(dev);
+ unregister_netdev(dev);
dma_free_coherent(&pdev->dev, TX_TOTAL_SIZE, np->tx_ring,
np->tx_ring_dma);
dma_free_coherent(&pdev->dev, RX_TOTAL_SIZE, np->rx_ring,
np->rx_ring_dma);
- unregister_netdev(dev);
pci_iounmap(pdev, np->mem);
free_netdev(dev);
pci_release_regions(pdev);
base-commit: 2e54b3e187300893688c2c7517894f5d96732e05