mfd: Clean timberdale error handling code up
authorJulia Lawall <julia@diku.dk>
Wed, 10 Aug 2011 08:47:16 +0000 (10:47 +0200)
committerSamuel Ortiz <sameo@linux.intel.com>
Mon, 24 Oct 2011 12:09:10 +0000 (14:09 +0200)
In the first three cases, ioremap has been called, so iounmap is needed.  A
new label for this is introduced, to differentiate it from err_msix, which
is the first point at which msix_entries actually needs to be freed.

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
drivers/mfd/timberdale.c

index 696879e2eef77b2429fd8b52e77375a5032e45fc..02d65692ceb415a1ae95a863dd660adda46807c9 100644 (file)
@@ -697,7 +697,7 @@ static int __devinit timb_probe(struct pci_dev *dev,
                dev_err(&dev->dev, "The driver supports an older "
                        "version of the FPGA, please update the driver to "
                        "support %d.%d\n", priv->fw.major, priv->fw.minor);
-               goto err_ioremap;
+               goto err_config;
        }
        if (priv->fw.major < TIMB_SUPPORTED_MAJOR ||
                priv->fw.minor < TIMB_REQUIRED_MINOR) {
@@ -705,13 +705,13 @@ static int __devinit timb_probe(struct pci_dev *dev,
                        "please upgrade the FPGA to at least: %d.%d\n",
                        priv->fw.major, priv->fw.minor,
                        TIMB_SUPPORTED_MAJOR, TIMB_REQUIRED_MINOR);
-               goto err_ioremap;
+               goto err_config;
        }
 
        msix_entries = kzalloc(TIMBERDALE_NR_IRQS * sizeof(*msix_entries),
                GFP_KERNEL);
        if (!msix_entries)
-               goto err_ioremap;
+               goto err_config;
 
        for (i = 0; i < TIMBERDALE_NR_IRQS; i++)
                msix_entries[i].entry = i;
@@ -825,6 +825,8 @@ err_mfd:
 err_create_file:
        pci_disable_msix(dev);
 err_msix:
+       kfree(msix_entries);
+err_config:
        iounmap(priv->ctl_membase);
 err_ioremap:
        release_mem_region(priv->ctl_mapbase, CHIPCTLSIZE);
@@ -833,7 +835,6 @@ err_request:
 err_start:
        pci_disable_device(dev);
 err_enable:
-       kfree(msix_entries);
        kfree(priv);
        pci_set_drvdata(dev, NULL);
        return -ENODEV;