From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754004AbbL2VCp (ORCPT ); Tue, 29 Dec 2015 16:02:45 -0500 Received: from mout.web.de ([212.227.17.12]:59266 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753841AbbL2VCn (ORCPT ); Tue, 29 Dec 2015 16:02:43 -0500 Subject: [PATCH 2/2] mmc-sdricoh_cs: Less checks in sdricoh_init_mmc() after, error detection To: linux-mmc@vger.kernel.org, Sascha Sommer , Ulf Hansson References: <566ABCD9.1060404@users.sourceforge.net> <5682F3AC.7050107@users.sourceforge.net> Cc: LKML , kernel-janitors@vger.kernel.org, Julia Lawall From: SF Markus Elfring Message-ID: <5682F4ED.4070803@users.sourceforge.net> Date: Tue, 29 Dec 2015 22:02:37 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.4.0 MIME-Version: 1.0 In-Reply-To: <5682F3AC.7050107@users.sourceforge.net> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:nnpyq+FwkEeLEHqzhAAHonmx3K1+/hZlLMoIeBtwZc8xgNIyPpi YerGTCMifVElIM6zxdDyyjjE5C5sM3gsNMu6eWXkYC7zUZqGalXe7zxJiH+1PS775PnqZC3 DFN9HUj4nOVC+Em9AZAzTGdi85TfxMDaHFwFcQeoyny48AUzQSeVk+j/EmuvcIqygYv6Szh o6CQjcNI5YNtdGRb+eORA== X-UI-Out-Filterresults: notjunk:1;V01:K0:QZ3KYh5fLnk=:MdW7JN0Z6KUkh2X9RnstCI WJGYeaZeAezaV3pnJIPYQx8UQ0MYyPk/tTIKDkf2YM8eSgvnqkVkA5ZRZjuKj+NojaDdOMMGp XRxjXNBxcLIoF0RcUGuL9aK7kFHtejy54t50saJ2+58mYM07Uq4VlwBxmz96+Nin7tG5eVV4U fi4n2CtzFgs4t0bNaxm2PsJ7urgRBP3LV8nX/qoB8V99A7O8HfMSE1h4JfmoVYZX22mf6XtYa YlyfvtZOXzFrOQndCA2u3IjlmhAt1XjuftpG2G8tICcigqtn129Hwc+yYeT1/XlLiHeibqfAH U3zPJXA+W/CmnD+uvh7Dq9ZGSeBu06gefAHD900MwdVuYZAs3xVIPjwkrYAqPondYPm/MFmsu uFQieUWOHt9pI/dqs4bFMn9vHKIlHnQryQnkuOrV2/X81qwiiKVUD6nNa9sna4mbkGjS2JXLG SkfLXAo99cs5mTF79kRvzOHWMs+hEQJ1AmCkuB7dMHXGir37+Al7D2qHkYh2Sx/B9i/H9iXBq hevgaHNQb80QPZIm6WDDn976o833GMQMpUu1zKDT4fSVDPt6jbd1dxFG/8GdZsXEJcAtY2TwJ VQI+dYf9uLSqIq7yO6i5K37wLpLtjUdSr4khGUc9rvSo1CDxzaJ6CtmnIB8ZByQn1Y9TLJqbN ExV74nhIX6VkmfL9pCEKwHYXRKXenmwxYxDJsCiuX4ZHJ8Z5UIWs6KT7akI8zHzH1eJ135xK2 i0H7DqQYhjzKJGy5/F5H7Fhh8WnDpRj8OU/9RWEBFhI1ebdd8OhgsdGjWh3Jba3+rC1s0xlDC y2IahoHp7eiCD/QIWvfzgznxk2qLQ== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Tue, 29 Dec 2015 21:45:34 +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 --- drivers/mmc/host/sdricoh_cs.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/drivers/mmc/host/sdricoh_cs.c b/drivers/mmc/host/sdricoh_cs.c index 5e57d9f..5ff26ab 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; } -- 2.6.3 From mboxrd@z Thu Jan 1 00:00:00 1970 From: SF Markus Elfring Date: Tue, 29 Dec 2015 21:02:37 +0000 Subject: [PATCH 2/2] mmc-sdricoh_cs: Less checks in sdricoh_init_mmc() after, error detection Message-Id: <5682F4ED.4070803@users.sourceforge.net> List-Id: References: <566ABCD9.1060404@users.sourceforge.net> <5682F3AC.7050107@users.sourceforge.net> In-Reply-To: <5682F3AC.7050107@users.sourceforge.net> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-mmc@vger.kernel.org, Sascha Sommer , Ulf Hansson Cc: LKML , kernel-janitors@vger.kernel.org, Julia Lawall From: Markus Elfring Date: Tue, 29 Dec 2015 21:45:34 +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 --- drivers/mmc/host/sdricoh_cs.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/drivers/mmc/host/sdricoh_cs.c b/drivers/mmc/host/sdricoh_cs.c index 5e57d9f..5ff26ab 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; } -- 2.6.3