linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: elfring@users.sourceforge.net (SF Markus Elfring)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/3] ste_dma40: Delete another unnecessary check in d40_probe()
Date: Mon, 16 Nov 2015 22:24:38 +0100	[thread overview]
Message-ID: <564A4996.2000406@users.sourceforge.net> (raw)
In-Reply-To: <564A4899.8040109@users.sourceforge.net>

From: Markus Elfring <elfring@users.sourceforge.net>
Date: Mon, 16 Nov 2015 21:56:07 +0100

A single jump label was used by the d40_probe() function in several cases
for error handling which was a bit inefficient here.

* This implementation detail could be improved by the introduction
  of another jump label.

* Remove an extra check for the variable "base".

* Omit its explicit initialisation at the beginning then.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
 drivers/dma/ste_dma40.c | 82 ++++++++++++++++++++++++-------------------------
 1 file changed, 40 insertions(+), 42 deletions(-)

diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c
index 9132ae0..8ebfde1 100644
--- a/drivers/dma/ste_dma40.c
+++ b/drivers/dma/ste_dma40.c
@@ -3543,7 +3543,7 @@ static int __init d40_probe(struct platform_device *pdev)
 	struct stedma40_platform_data *plat_data = dev_get_platdata(&pdev->dev);
 	struct device_node *np = pdev->dev.of_node;
 	int ret = -ENOENT;
-	struct d40_base *base = NULL;
+	struct d40_base *base;
 	struct resource *res = NULL;
 	int num_reserved_chans;
 	u32 val;
@@ -3552,17 +3552,17 @@ static int __init d40_probe(struct platform_device *pdev)
 		if (np) {
 			if (d40_of_probe(pdev, np)) {
 				ret = -ENOMEM;
-				goto failure;
+				goto report_failure;
 			}
 		} else {
 			d40_err(&pdev->dev, "No pdata or Device Tree provided\n");
-			goto failure;
+			goto report_failure;
 		}
 	}
 
 	base = d40_hw_detect_init(pdev);
 	if (!base)
-		goto failure;
+		goto report_failure;
 
 	num_reserved_chans = d40_phy_res_init(base);
 
@@ -3693,50 +3693,48 @@ static int __init d40_probe(struct platform_device *pdev)
 	return 0;
 
 failure:
-	if (base) {
-		kmem_cache_destroy(base->desc_slab);
-		if (base->virtbase)
-			iounmap(base->virtbase);
+	kmem_cache_destroy(base->desc_slab);
+	if (base->virtbase)
+		iounmap(base->virtbase);
 
-		if (base->lcla_pool.base && base->plat_data->use_esram_lcla) {
-			iounmap(base->lcla_pool.base);
-			base->lcla_pool.base = NULL;
-		}
+	if (base->lcla_pool.base && base->plat_data->use_esram_lcla) {
+		iounmap(base->lcla_pool.base);
+		base->lcla_pool.base = NULL;
+	}
 
-		if (base->lcla_pool.dma_addr)
-			dma_unmap_single(base->dev, base->lcla_pool.dma_addr,
-					 SZ_1K * base->num_phy_chans,
-					 DMA_TO_DEVICE);
-
-		if (!base->lcla_pool.base_unaligned && base->lcla_pool.base)
-			free_pages((unsigned long)base->lcla_pool.base,
-				   base->lcla_pool.pages);
-
-		kfree(base->lcla_pool.base_unaligned);
-
-		if (base->phy_lcpa)
-			release_mem_region(base->phy_lcpa,
-					   base->lcpa_size);
-		if (base->phy_start)
-			release_mem_region(base->phy_start,
-					   base->phy_size);
-		if (base->clk) {
-			clk_disable_unprepare(base->clk);
-			clk_put(base->clk);
-		}
+	if (base->lcla_pool.dma_addr)
+		dma_unmap_single(base->dev, base->lcla_pool.dma_addr,
+				 SZ_1K * base->num_phy_chans,
+				 DMA_TO_DEVICE);
 
-		if (base->lcpa_regulator) {
-			regulator_disable(base->lcpa_regulator);
-			regulator_put(base->lcpa_regulator);
-		}
+	if (!base->lcla_pool.base_unaligned && base->lcla_pool.base)
+		free_pages((unsigned long)base->lcla_pool.base,
+			   base->lcla_pool.pages);
 
-		kfree(base->lcla_pool.alloc_map);
-		kfree(base->lookup_log_chans);
-		kfree(base->lookup_phy_chans);
-		kfree(base->phy_res);
-		kfree(base);
+	kfree(base->lcla_pool.base_unaligned);
+
+	if (base->phy_lcpa)
+		release_mem_region(base->phy_lcpa,
+				   base->lcpa_size);
+	if (base->phy_start)
+		release_mem_region(base->phy_start,
+				   base->phy_size);
+	if (base->clk) {
+		clk_disable_unprepare(base->clk);
+		clk_put(base->clk);
+	}
+
+	if (base->lcpa_regulator) {
+		regulator_disable(base->lcpa_regulator);
+		regulator_put(base->lcpa_regulator);
 	}
 
+	kfree(base->lcla_pool.alloc_map);
+	kfree(base->lookup_log_chans);
+	kfree(base->lookup_phy_chans);
+	kfree(base->phy_res);
+	kfree(base);
+report_failure:
 	d40_err(&pdev->dev, "probe failed\n");
 	return ret;
 }
-- 
2.6.2

  parent reply	other threads:[~2015-11-16 21:24 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <5307CAA2.8060406@users.sourceforge.net>
     [not found] ` <alpine.DEB.2.02.1402212321410.2043@localhost6.localdomain6>
     [not found]   ` <530A086E.8010901@users.sourceforge.net>
     [not found]     ` <alpine.DEB.2.02.1402231635510.1985@localhost6.localdomain6>
     [not found]       ` <530A72AA.3000601@users.sourceforge.net>
     [not found]         ` <alpine.DEB.2.02.1402240658210.2090@localhost6.localdomain6>
     [not found]           ` <530B5FB6.6010207@users.sourceforge.net>
     [not found]             ` <alpine.DEB.2.10.1402241710370.2074@hadrien>
     [not found]               ` <530C5E18.1020800@users.sourceforge.net>
     [not found]                 ` <alpine.DEB.2.10.1402251014170.2080@hadrien>
     [not found]                   ` <530CD2C4.4050903@users.sourceforge.net>
     [not found]                     ` <alpine.DEB.2.10.1402251840450.7035@hadrien>
     [not found]                       ` <530CF8FF.8080600@users.sourceforge.net>
     [not found]                         ` <alpine.DEB.2.02.1402252117150.2047@localhost6.localdomain6>
     [not found]                           ` <530DD06F.4090703@users.sourceforge.net>
     [not found]                             ` <alpine.DEB.2.02.1402262129250.2221@localhost6.localdomain6>
     [not found]                               ` <5317A59D.4@users.sourceforge.net>
2014-11-20 10:50                                 ` [PATCH 1/1] [media] platform: Deletion of unnecessary checks before two function calls SF Markus Elfring
2014-11-20 13:50                                 ` [PATCH 1/1] net: Xilinx: " SF Markus Elfring
2014-11-20 17:29                                   ` Sören Brinkmann
2014-11-21 20:14                                   ` David Miller
2014-11-21 10:12                                 ` [PATCH 1/1] thermal: Exynos: " SF Markus Elfring
2014-11-21 10:17                                   ` Julia Lawall
2014-11-21 13:25                                     ` SF Markus Elfring
2014-11-21 16:17                                     ` [PATCH v2] " SF Markus Elfring
2014-11-22 10:00                                 ` [PATCH 1/1] ARM: OMAP2: Deletion of unnecessary checks before three " SF Markus Elfring
2015-06-30 12:10                                   ` [PATCH] ARM: OMAP2: Delete " SF Markus Elfring
2015-07-16  5:55                                     ` Paul Walmsley
2015-07-16  6:23                                       ` Tony Lindgren
2015-07-16 14:06                                         ` Paul Walmsley
2015-07-16 16:28                                           ` Tony Lindgren
2015-07-16  6:40                                       ` SF Markus Elfring
2014-11-22 10:40                                 ` [PATCH 1/1] ARM-kernel: Deletion of unnecessary checks before two " SF Markus Elfring
2014-12-03  8:15                                 ` [PATCH] ARM: DaVinci: Deletion of an unnecessary check before the function call "__clk_disable" SF Markus Elfring
2014-12-03  9:10                                   ` SF Markus Elfring
2015-02-04 21:00                                 ` [PATCH] GPU-DRM-Exynos: Delete unnecessary checks before two function calls SF Markus Elfring
2015-02-05  8:29                                   ` Joonyoung Shim
2015-06-27 17:17                                     ` SF Markus Elfring
2016-07-21 17:42                                     ` [PATCH] GPU-DRM-Exynos: Delete an unnecessary check before the function call "vunmap" SF Markus Elfring
2016-07-21 18:07                                       ` Sean Paul
2015-06-25 11:33                                 ` [PATCH 0/2] ARM-OMAP2+: Deletion of unnecessary checks before two function calls SF Markus Elfring
2015-06-25 11:38                                   ` [PATCH 1/2] ARM-OMAP2+: Delete an unnecessary check before the function call "omap_device_delete" SF Markus Elfring
2015-06-25 11:40                                   ` [PATCH 2/2] ARM-OMAP2+: Delete an unnecessary check before the function call "of_node_put" SF Markus Elfring
2015-07-15  6:41                                   ` [PATCH 0/2] ARM-OMAP2+: Deletion of unnecessary checks before two function calls Tony Lindgren
2015-06-25 13:27                                 ` [PATCH 0/2] ARM-kernel: " SF Markus Elfring
2015-06-25 13:30                                   ` [PATCH 1/2] ARM-kernel: Delete an unnecessary check before the function call "smp_set_ops" SF Markus Elfring
2015-06-25 13:32                                   ` [PATCH 2/2] ARM-kernel: Delete an unnecessary check before the function call "unwind_table_del" SF Markus Elfring
2015-06-28 14:05                                 ` [PATCH] iommu/arm-smmu: Delete an unnecessary check before the function call "free_io_pgtable_ops" SF Markus Elfring
2015-11-06 17:38                                   ` [PATCH] iommu/arm-smmu: Delete an unnecessary check before free_io_pgtable_ops() SF Markus Elfring
2015-06-28 14:52                                 ` [PATCH] PCI-iproc: Delete unnecessary checks before two function calls SF Markus Elfring
2015-06-29 16:45                                   ` Ray Jui
2015-07-14 20:10                                   ` Bjorn Helgaas
2015-07-14 20:23                                     ` Ray Jui
2015-07-14 20:51                                       ` Bjorn Helgaas
2015-07-14 20:53                                         ` Ray Jui
2015-06-29 10:48                                 ` [PATCH] net-Liquidio: Delete unnecessary checks before the function call "vfree" SF Markus Elfring
2015-06-29 16:28                                   ` David Miller
2015-11-05 16:17                                 ` [PATCH] pinctrl: Delete unnecessary checks before the function call "pinctrl_unregister" SF Markus Elfring
2015-11-05 16:53                                   ` Ray Jui
2015-11-17 10:50                                   ` Linus Walleij
2015-11-05 18:45                                 ` [PATCH 0/2] [media] c8sectpfe: Deletion of a few unnecessary checks SF Markus Elfring
2015-11-05 18:49                                   ` [PATCH 1/2] [media] c8sectpfe: Delete unnecessary checks before two function calls SF Markus Elfring
2015-11-05 18:50                                   ` [PATCH 2/2] [media] c8sectpfe: Combine three checks into a single if block SF Markus Elfring
2015-11-06 10:09                                     ` walter harms
2015-11-06  7:50                                   ` [PATCH 0/2] [media] c8sectpfe: Deletion of a few unnecessary checks Maxime Coquelin
2015-11-16 21:20                                 ` [PATCH 0/3] ste_dma40: " SF Markus Elfring
2015-11-16 21:23                                   ` [PATCH 1/3] ste_dma40: Delete an unnecessary check before the function call "kmem_cache_destroy" SF Markus Elfring
2015-11-29 21:26                                     ` Linus Walleij
2015-11-16 21:24                                   ` SF Markus Elfring [this message]
2015-11-29 21:28                                     ` [PATCH 2/3] ste_dma40: Delete another unnecessary check in d40_probe() Linus Walleij
2015-11-16 21:26                                   ` [PATCH 3/3] ste_dma40: Delete an unnecessary variable initialisation " SF Markus Elfring
2015-11-29 21:29                                     ` Linus Walleij
2015-12-10  3:47                                   ` [PATCH 0/3] ste_dma40: Deletion of a few unnecessary checks Vinod Koul
2016-07-15 13:35                                 ` [PATCH] drm/rockchip: Delete an unnecessary check before drm_gem_object_unreference_unlocked() SF Markus Elfring
2016-07-19  1:59                                   ` Mark yao
2016-07-20 16:40                                 ` [PATCH] GPU-DRM-sun4i: Delete an unnecessary check before drm_fbdev_cma_hotplug_event() SF Markus Elfring
2016-07-20 17:47                                   ` Daniel Vetter
2016-07-22 10:56                                 ` [PATCH] GPU-DRM: Delete an unnecessary check before drm_property_unreference_blob() SF Markus Elfring
2016-07-25  8:43                                   ` Matthias Brugger
2016-07-23 18:08                                 ` [PATCH] coresight: tmc: Delete an unnecessary check before the function call "kfree" SF Markus Elfring
2016-07-25 16:36                                   ` Mathieu Poirier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=564A4996.2000406@users.sourceforge.net \
    --to=elfring@users.sourceforge.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).