diff options
author | Markus Elfring <elfring@users.sourceforge.net> | 2015-12-29 21:45:34 +0100 |
---|---|---|
committer | Ulf Hansson <ulf.hansson@linaro.org> | 2016-02-29 11:02:45 +0100 |
commit | 1856de3d3e6cd6c2fe2f53f29f6b572795e3257a (patch) | |
tree | a48a871de3383244760b7011614af6538f76dc14 /drivers/mmc/host/sdricoh_cs.c | |
parent | c48c5d580e2aa6c22759836759b3c01e4ee9e8c0 (diff) | |
download | talos-op-linux-1856de3d3e6cd6c2fe2f53f29f6b572795e3257a.tar.gz talos-op-linux-1856de3d3e6cd6c2fe2f53f29f6b572795e3257a.zip |
mmc: sdricoh_cs: Less checks in sdricoh_init_mmc() after, error detection
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>
Diffstat (limited to 'drivers/mmc/host/sdricoh_cs.c')
-rw-r--r-- | drivers/mmc/host/sdricoh_cs.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/drivers/mmc/host/sdricoh_cs.c b/drivers/mmc/host/sdricoh_cs.c index 5e57d9f7f7b5..5ff26ab81eb1 100644 --- a/drivers/mmc/host/sdricoh_cs.c +++ b/drivers/mmc/host/sdricoh_cs.c @@ -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; } |