mmc: sdricoh_cs: Less checks in sdricoh_init_mmc() after, error detection
authorMarkus Elfring <elfring@users.sourceforge.net>
Tue, 29 Dec 2015 20:45:34 +0000 (21:45 +0100)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 29 Feb 2016 10:02:45 +0000 (11:02 +0100)
This issue was detected by using the Coccinelle software.

Two pointer checks could be repeated by the sdricoh_init_mmc() function
during error handling even if the relevant properties can be determined
for the involved variables before by source code analysis.

* This implementation detail could be improved by adjustments
  for jump targets according to the Linux coding style convention.

* Drop an unnecessary initialisation for the variable "mmc" then.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/host/sdricoh_cs.c

index 5e57d9f..5ff26ab 100644 (file)
@@ -400,7 +400,7 @@ static int sdricoh_init_mmc(struct pci_dev *pci_dev,
 {
        int result;
        void __iomem *iobase;
-       struct mmc_host *mmc = NULL;
+       struct mmc_host *mmc;
        struct sdricoh_host *host;
        struct device *dev = &pcmcia_dev->dev;
        /* map iomem */
@@ -419,7 +419,7 @@ static int sdricoh_init_mmc(struct pci_dev *pci_dev,
        if (readl(iobase + R104_VERSION) != 0x4000) {
                dev_dbg(dev, "no supported mmc controller found\n");
                result = -ENODEV;
-               goto err;
+               goto unmap_io;
        }
        /* allocate privdata */
        mmc = pcmcia_dev->priv =
@@ -427,7 +427,7 @@ static int sdricoh_init_mmc(struct pci_dev *pci_dev,
        if (!mmc) {
                dev_err(dev, "mmc_alloc_host failed\n");
                result = -ENOMEM;
-               goto err;
+               goto unmap_io;
        }
        host = mmc_priv(mmc);
 
@@ -451,8 +451,7 @@ static int sdricoh_init_mmc(struct pci_dev *pci_dev,
        if (sdricoh_reset(host)) {
                dev_dbg(dev, "could not reset\n");
                result = -EIO;
-               goto err;
-
+               goto free_host;
        }
 
        result = mmc_add_host(mmc);
@@ -461,13 +460,10 @@ static int sdricoh_init_mmc(struct pci_dev *pci_dev,
                dev_dbg(dev, "mmc host registered\n");
                return 0;
        }
-
-err:
-       if (iobase)
-               pci_iounmap(pci_dev, iobase);
-       if (mmc)
-               mmc_free_host(mmc);
-
+free_host:
+       mmc_free_host(mmc);
+unmap_io:
+       pci_iounmap(pci_dev, iobase);
        return result;
 }