All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jon Hunter <jon-hunter@ti.com>
To: Linus Walleij <linus.walleij@linaro.org>,
	Grant Likely <grant.likely@secretlab.ca>,
	Santosh Shilimkar <santosh.shilimkar@ti.com>,
	Kevin Hilman <khilman@linaro.org>
Cc: device-tree <devicetree-discuss@lists.ozlabs.org>,
	linux-omap <linux-omap@vger.kernel.org>,
	linux-arm <linux-arm-kernel@lists.infradead.org>,
	Jon Hunter <jon-hunter@ti.com>
Subject: [PATCH 1/5] gpio/omap: free irq domain in probe() failure paths
Date: Thu, 4 Apr 2013 15:16:12 -0500	[thread overview]
Message-ID: <1365106576-31816-2-git-send-email-jon-hunter@ti.com> (raw)
In-Reply-To: <1365106576-31816-1-git-send-email-jon-hunter@ti.com>

Currently the IRQ domain is not freed once allocated, in the case where
omap_gpio_probe() fails. Therefore, ensure we free the domain if the
probe does fail. Furthermore, the local variable "ret" is not needed
and so remove this.

Signed-off-by: Jon Hunter <jon-hunter@ti.com>
---
 drivers/gpio/gpio-omap.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index 0d30c7a..1e666c8 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -1094,7 +1094,6 @@ static int omap_gpio_probe(struct platform_device *pdev)
 	const struct omap_gpio_platform_data *pdata;
 	struct resource *res;
 	struct gpio_bank *bank;
-	int ret = 0;
 
 	match = of_match_device(of_match_ptr(omap_gpio_match), dev);
 
@@ -1143,18 +1142,21 @@ static int omap_gpio_probe(struct platform_device *pdev)
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (unlikely(!res)) {
 		dev_err(dev, "Invalid mem resource\n");
+		irq_domain_remove(bank->domain);
 		return -ENODEV;
 	}
 
 	if (!devm_request_mem_region(dev, res->start, resource_size(res),
 				     pdev->name)) {
 		dev_err(dev, "Region already claimed\n");
+		irq_domain_remove(bank->domain);
 		return -EBUSY;
 	}
 
 	bank->base = devm_ioremap(dev, res->start, resource_size(res));
 	if (!bank->base) {
 		dev_err(dev, "Could not ioremap\n");
+		irq_domain_remove(bank->domain);
 		return -ENOMEM;
 	}
 
@@ -1178,7 +1180,7 @@ static int omap_gpio_probe(struct platform_device *pdev)
 
 	list_add_tail(&bank->node, &omap_gpio_list);
 
-	return ret;
+	return 0;
 }
 
 #ifdef CONFIG_ARCH_OMAP2PLUS
-- 
1.7.10.4


WARNING: multiple messages have this Message-ID (diff)
From: jon-hunter@ti.com (Jon Hunter)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/5] gpio/omap: free irq domain in probe() failure paths
Date: Thu, 4 Apr 2013 15:16:12 -0500	[thread overview]
Message-ID: <1365106576-31816-2-git-send-email-jon-hunter@ti.com> (raw)
In-Reply-To: <1365106576-31816-1-git-send-email-jon-hunter@ti.com>

Currently the IRQ domain is not freed once allocated, in the case where
omap_gpio_probe() fails. Therefore, ensure we free the domain if the
probe does fail. Furthermore, the local variable "ret" is not needed
and so remove this.

Signed-off-by: Jon Hunter <jon-hunter@ti.com>
---
 drivers/gpio/gpio-omap.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
index 0d30c7a..1e666c8 100644
--- a/drivers/gpio/gpio-omap.c
+++ b/drivers/gpio/gpio-omap.c
@@ -1094,7 +1094,6 @@ static int omap_gpio_probe(struct platform_device *pdev)
 	const struct omap_gpio_platform_data *pdata;
 	struct resource *res;
 	struct gpio_bank *bank;
-	int ret = 0;
 
 	match = of_match_device(of_match_ptr(omap_gpio_match), dev);
 
@@ -1143,18 +1142,21 @@ static int omap_gpio_probe(struct platform_device *pdev)
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (unlikely(!res)) {
 		dev_err(dev, "Invalid mem resource\n");
+		irq_domain_remove(bank->domain);
 		return -ENODEV;
 	}
 
 	if (!devm_request_mem_region(dev, res->start, resource_size(res),
 				     pdev->name)) {
 		dev_err(dev, "Region already claimed\n");
+		irq_domain_remove(bank->domain);
 		return -EBUSY;
 	}
 
 	bank->base = devm_ioremap(dev, res->start, resource_size(res));
 	if (!bank->base) {
 		dev_err(dev, "Could not ioremap\n");
+		irq_domain_remove(bank->domain);
 		return -ENOMEM;
 	}
 
@@ -1178,7 +1180,7 @@ static int omap_gpio_probe(struct platform_device *pdev)
 
 	list_add_tail(&bank->node, &omap_gpio_list);
 
-	return ret;
+	return 0;
 }
 
 #ifdef CONFIG_ARCH_OMAP2PLUS
-- 
1.7.10.4

  reply	other threads:[~2013-04-04 20:16 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-04 20:16 [PATCH 0/5] gpio/omap: 2nd batch of updates for v3.10 Jon Hunter
2013-04-04 20:16 ` Jon Hunter
2013-04-04 20:16 ` Jon Hunter [this message]
2013-04-04 20:16   ` [PATCH 1/5] gpio/omap: free irq domain in probe() failure paths Jon Hunter
2013-04-10 19:33   ` Linus Walleij
2013-04-10 19:33     ` Linus Walleij
2013-04-10 19:48     ` Jon Hunter
2013-04-10 19:48       ` Jon Hunter
2013-04-15 22:06       ` Kevin Hilman
2013-04-15 22:06         ` Kevin Hilman
2013-04-04 20:16 ` [PATCH 2/5] gpio/omap: remove extra context restores in *_runtime_resume() Jon Hunter
2013-04-04 20:16   ` Jon Hunter
2013-04-10 19:34   ` Linus Walleij
2013-04-10 19:34     ` Linus Walleij
2013-04-04 20:16 ` [PATCH 3/5] gpio/omap: optimise interrupt service routine Jon Hunter
2013-04-04 20:16   ` Jon Hunter
2013-04-05  9:19   ` Felipe Balbi
2013-04-05  9:19     ` Felipe Balbi
2013-04-10 19:37   ` Linus Walleij
2013-04-10 19:37     ` Linus Walleij
2013-04-04 20:16 ` [PATCH 4/5] gpio/omap: force restore if context loss is not detectable Jon Hunter
2013-04-04 20:16   ` Jon Hunter
2013-04-10 19:39   ` Linus Walleij
2013-04-10 19:39     ` Linus Walleij
     [not found]     ` <CACRpkdbeABuFXr0Gt6gRto3Pmo0m88AFn_xKJq14VonGg7Doww-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-10 19:41       ` Jon Hunter
2013-04-10 19:41         ` Jon Hunter
2013-04-10 19:44         ` Linus Walleij
2013-04-10 19:44           ` Linus Walleij
2013-04-10 19:50           ` Jon Hunter
2013-04-10 19:50             ` Jon Hunter
2013-04-10 20:47             ` Linus Walleij
2013-04-10 20:47               ` Linus Walleij
2013-04-04 20:16 ` [PATCH 5/5] ARM: dts: OMAP2+: Identify GPIO banks that are always powered Jon Hunter
2013-04-04 20:16   ` Jon Hunter
2013-04-04 20:35   ` Tony Lindgren
2013-04-04 20:35     ` Tony Lindgren
2013-04-04 21:01     ` Jon Hunter
2013-04-04 21:01       ` Jon Hunter
2013-04-04 21:08       ` Tony Lindgren
2013-04-04 21:08         ` Tony Lindgren
2013-04-05  6:35 ` [PATCH 0/5] gpio/omap: 2nd batch of updates for v3.10 Santosh Shilimkar
2013-04-05  6:35   ` Santosh Shilimkar
2013-04-05 12:18   ` Jon Hunter
2013-04-05 12:18     ` Jon Hunter
2013-04-05 17:56 ` Kevin Hilman
2013-04-05 17:56   ` Kevin Hilman

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=1365106576-31816-2-git-send-email-jon-hunter@ti.com \
    --to=jon-hunter@ti.com \
    --cc=devicetree-discuss@lists.ozlabs.org \
    --cc=grant.likely@secretlab.ca \
    --cc=khilman@linaro.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-omap@vger.kernel.org \
    --cc=santosh.shilimkar@ti.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.