]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
mtd: rawnand: denali: Fix missing pci_release_regions in probe and remove
authorChen Ridong <chenridong@huawei.com>
Mon, 26 Aug 2024 02:43:39 +0000 (02:43 +0000)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Fri, 6 Sep 2024 14:59:37 +0000 (16:59 +0200)
The pci_release_regions was miss at error case, just add it.

Signed-off-by: Chen Ridong <chenridong@huawei.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20240826024339.476921-1-chenridong@huawei.com
drivers/mtd/nand/raw/denali_pci.c

index de7e722d38262513e5c73e9f8641916de1b4389d..e22094e39546e9a8dd2bdba78ccb63279f2855eb 100644 (file)
@@ -77,18 +77,20 @@ static int denali_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
        denali->reg = devm_ioremap(denali->dev, csr_base, csr_len);
        if (!denali->reg) {
                dev_err(&dev->dev, "Spectra: Unable to remap memory region\n");
-               return -ENOMEM;
+               ret = -ENOMEM;
+               goto regions_release;
        }
 
        denali->host = devm_ioremap(denali->dev, mem_base, mem_len);
        if (!denali->host) {
                dev_err(&dev->dev, "Spectra: ioremap failed!");
-               return -ENOMEM;
+               ret = -ENOMEM;
+               goto regions_release;
        }
 
        ret = denali_init(denali);
        if (ret)
-               return ret;
+               goto regions_release;
 
        nsels = denali->nbanks;
 
@@ -116,6 +118,8 @@ static int denali_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
 
 out_remove_denali:
        denali_remove(denali);
+regions_release:
+       pci_release_regions(dev);
        return ret;
 }
 
@@ -123,6 +127,7 @@ static void denali_pci_remove(struct pci_dev *dev)
 {
        struct denali_controller *denali = pci_get_drvdata(dev);
 
+       pci_release_regions(dev);
        denali_remove(denali);
 }