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
next prev 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).