ahd_linux_pci_dev_probe() enables the PCI device before calling ahd_pci_config(). If configuration fails, ahd_free() releases the controller resources but leaves the PCI enable reference outstanding. The remove callback is not called for a failed probe. Disable the PCI device after ahd_free() on this error path. The imbalance already exists in the initial Git import. This issue was identified during our ongoing static-analysis research while reviewing kernel code. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Cc: stable@vger.kernel.org Assisted-by: LLM Co-developed-by: Ijae Kim Signed-off-by: Ijae Kim Signed-off-by: Myeonghun Pak --- drivers/scsi/aic7xxx/aic79xx_osm_pci.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/scsi/aic7xxx/aic79xx_osm_pci.c b/drivers/scsi/aic7xxx/aic79xx_osm_pci.c index 5fba316..37f4395 100644 --- a/drivers/scsi/aic7xxx/aic79xx_osm_pci.c +++ b/drivers/scsi/aic7xxx/aic79xx_osm_pci.c @@ -189,6 +189,7 @@ ahd_linux_pci_dev_probe(struct pci_dev *pdev, const struct pci_device_id *ent) error = ahd_pci_config(ahd, entry); if (error != 0) { ahd_free(ahd); + pci_disable_device(pdev); return (-error); }