The probe function calls pci_request_regions(), but I do not see corresponding pci_release_regions() calls.
While we are here, rename the jump labels to follow the guideline "Choose label names which say what the goto does" suggested by Documentation/CodingStyle. Signed-off-by: Masahiro Yamada <yamada.masah...@socionext.com> --- drivers/mtd/nand/denali_pci.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/mtd/nand/denali_pci.c b/drivers/mtd/nand/denali_pci.c index de31514..be8152f 100644 --- a/drivers/mtd/nand/denali_pci.c +++ b/drivers/mtd/nand/denali_pci.c @@ -76,28 +76,31 @@ static int denali_pci_probe(struct pci_dev *dev, const struct pci_device_id *id) denali->flash_reg = ioremap_nocache(csr_base, csr_len); if (!denali->flash_reg) { dev_err(&dev->dev, "Spectra: Unable to remap memory region\n"); - return -ENOMEM; + ret = -ENOMEM; + goto release_regions; } denali->flash_mem = ioremap_nocache(mem_base, mem_len); if (!denali->flash_mem) { dev_err(&dev->dev, "Spectra: ioremap_nocache failed!"); ret = -ENOMEM; - goto failed_remap_reg; + goto unmap_reg; } ret = denali_init(denali); if (ret) - goto failed_remap_mem; + goto unmap_mem; pci_set_drvdata(dev, denali); return 0; -failed_remap_mem: +unmap_mem: iounmap(denali->flash_mem); -failed_remap_reg: +unmap_reg: iounmap(denali->flash_reg); +release_regions: + pci_release_regions(dev); return ret; } @@ -109,6 +112,7 @@ static void denali_pci_remove(struct pci_dev *dev) denali_remove(denali); iounmap(denali->flash_reg); iounmap(denali->flash_mem); + pci_release_regions(dev); } static struct pci_driver denali_pci_driver = { -- 1.9.1