* [PATCH net v2] net/qla3xxx: disable the PCI device on remove
@ 2026-09-13 20:45 Myeonghun Pak
0 siblings, 0 replies; only message in thread
From: Myeonghun Pak @ 2026-09-13 20:45 UTC (permalink / raw)
To: GR-Linux-NIC-Dev
Cc: andrew+netdev, davem, edumazet, kuba, pabeni, netdev,
linux-kernel, ae878000, horms
ql3xxx_probe() enables the PCI device and balances that reference on
probe failure. However, ql3xxx_remove() releases the mappings and PCI
regions without disabling the device, leaving the enable reference
held after unbind.
Add pci_disable_device() at the end of ql3xxx_remove() to balance the
successful probe's pci_enable_device() call. Keep the existing manual
cleanup and probe error handling unchanged.
This issue was identified during our ongoing static-analysis research while
reviewing kernel code.
Fixes: 5a4faa873782 ("[PATCH] qla3xxx NIC driver")
Co-developed-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
---
v2:
- Add pci_disable_device() to ql3xxx_remove() instead of converting
to pcim_enable_device(), as suggested by Simon Horman.
v1: https://lore.kernel.org/netdev/20260911033219.34566-1-mhun512@gmail.com/
drivers/net/ethernet/qlogic/qla3xxx.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/net/ethernet/qlogic/qla3xxx.c b/drivers/net/ethernet/qlogic/qla3xxx.c
--- a/drivers/net/ethernet/qlogic/qla3xxx.c
+++ b/drivers/net/ethernet/qlogic/qla3xxx.c
@@ -3916,6 +3916,7 @@ static void ql3xxx_remove(struct pci_dev *pdev)
iounmap(qdev->mem_map_registers);
pci_release_regions(pdev);
free_netdev(ndev);
+ pci_disable_device(pdev);
}
static struct pci_driver ql3xxx_driver = {
--
2.53.0
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-13 20:45 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-13 20:45 [PATCH net v2] net/qla3xxx: disable the PCI device on remove Myeonghun Pak
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox