]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: ipw2100: fix potential memory leak in ipw2100_pci_init_one()
authorAbdun Nihaal <nihaal@cse.iitm.ac.in>
Sat, 20 Jun 2026 06:52:39 +0000 (12:22 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 6 Jul 2026 12:11:06 +0000 (14:11 +0200)
The memory allocated in the ipw2100_alloc_device() function is not freed
in some of the error paths in ipw2100_pci_init_one(). Fix that by
converting the direct return into a goto to the error path return.

The error path when pci_enable_device() fails cannot jump to fail, since
at this point priv is not set, so perform error handling inline.

Fixes: 2c86c275015c ("Add ipw2100 wireless driver.")
Signed-off-by: Abdun Nihaal <nihaal@cse.iitm.ac.in>
Link: https://patch.msgid.link/20260620065242.93798-1-nihaal@cse.iitm.ac.in
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/ipw2x00/ipw2100.c

index c11428485dccf5f456920b9ff057fd7d72b692cc..2b8a23865bfb29226fa03a916c500479f8895b38 100644 (file)
@@ -6157,6 +6157,8 @@ static int ipw2100_pci_init_one(struct pci_dev *pci_dev,
        if (err) {
                printk(KERN_WARNING DRV_NAME
                       "Error calling pci_enable_device.\n");
+               free_libipw(dev, 0);
+               pci_iounmap(pci_dev, ioaddr);
                return err;
        }
 
@@ -6169,16 +6171,14 @@ static int ipw2100_pci_init_one(struct pci_dev *pci_dev,
        if (err) {
                printk(KERN_WARNING DRV_NAME
                       "Error calling pci_set_dma_mask.\n");
-               pci_disable_device(pci_dev);
-               return err;
+               goto fail;
        }
 
        err = pci_request_regions(pci_dev, DRV_NAME);
        if (err) {
                printk(KERN_WARNING DRV_NAME
                       "Error calling pci_request_regions.\n");
-               pci_disable_device(pci_dev);
-               return err;
+               goto fail;
        }
 
        /* We disable the RETRY_TIMEOUT register (0x41) to keep