From: Sricharan R <r.sricharan@ti.com>
To: linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
devicetree@vger.kernel.org
Cc: tony@atomide.com, santosh.shilimkar@ti.com, nm@ti.com,
rnayak@ti.com, tglx@linutronix.de, linux@arm.linux.org.uk,
r.sricharan@ti.com
Subject: [PATCH 07/14] irqchip: crossbar: return proper error value
Date: Tue, 3 Jun 2014 13:12:59 +0530 [thread overview]
Message-ID: <1401781386-4982-8-git-send-email-r.sricharan@ti.com> (raw)
In-Reply-To: <1401781386-4982-1-git-send-email-r.sricharan@ti.com>
From: Nishanth Menon <nm@ti.com>
crossbar_of_init always returns -ENOMEM in case of errors, return proper
error results in case of failures.
Signed-off-by: Nishanth Menon <nm@ti.com>
---
drivers/irqchip/irq-crossbar.c | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/drivers/irqchip/irq-crossbar.c b/drivers/irqchip/irq-crossbar.c
index fea3e5d..524e6e9 100644
--- a/drivers/irqchip/irq-crossbar.c
+++ b/drivers/irqchip/irq-crossbar.c
@@ -140,20 +140,26 @@ static const struct irq_domain_ops routable_irq_domain_ops = {
static int __init crossbar_of_init(struct device_node *node,
const struct crossbar_data *data)
{
- int i, size, max, reserved = 0, entry, safe_map;
+ int i, size, max = 0, reserved = 0, entry, safe_map;
const __be32 *irqsr;
const int *irqsk = NULL;
+ int ret = -ENOMEM;
cb = kzalloc(sizeof(*cb), GFP_KERNEL);
if (!cb)
- return -ENOMEM;
+ return ret;
cb->crossbar_base = of_iomap(node, 0);
if (!cb->crossbar_base)
goto err1;
of_property_read_u32(node, "ti,max-irqs", &max);
+ if (!max) {
+ pr_err("missing 'ti,max-irqs' property\n");
+ ret = -EINVAL;
+ goto err2;
+ }
cb->irq_map = kcalloc(max, sizeof(int), GFP_KERNEL);
if (!cb->irq_map)
goto err2;
@@ -174,6 +180,7 @@ static int __init crossbar_of_init(struct device_node *node,
i, &entry);
if (entry > max) {
pr_err("Invalid reserved entry\n");
+ ret = -EINVAL;
goto err3;
}
cb->irq_map[entry] = IRQ_RESERVED;
@@ -198,6 +205,7 @@ static int __init crossbar_of_init(struct device_node *node,
break;
default:
pr_err("Invalid reg-size property\n");
+ ret = -EINVAL;
goto err4;
break;
}
@@ -225,6 +233,7 @@ static int __init crossbar_of_init(struct device_node *node,
if (entry > max) {
pr_err("Invalid skip entry\n");
+ ret = -EINVAL;
goto err4;
}
cb->irq_map[entry] = IRQ_SKIP;
@@ -250,7 +259,7 @@ err2:
iounmap(cb->crossbar_base);
err1:
kfree(cb);
- return -ENOMEM;
+ return ret;
}
/* irq number 10,133,139 and 140 cannot be used because of hw bug */
--
1.7.9.5
next prev parent reply other threads:[~2014-06-03 7:42 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-03 7:42 [PATCH 00/14] irqchip: crossbar: driver fixes Sricharan R
2014-06-03 7:42 ` [PATCH 01/14] irqchip: crossbar: remove IS_ERR_VALUE check Sricharan R
2014-06-03 7:42 ` [PATCH 02/14] irqchip: crossbar: fix sparse warnings Sricharan R
2014-06-03 7:42 ` [PATCH 03/14] irqchip: crossbar: fix checkpatch warning Sricharan R
2014-06-03 7:42 ` [PATCH 04/14] irqchip: crossbar: fix kerneldoc warning Sricharan R
2014-06-03 7:42 ` [PATCH 05/14] irqchip: crossbar: DRA7: Fix unused crossbar list Sricharan R
2014-06-03 7:42 ` [PATCH 06/14] irqchip: crossbar: fix memory leak incase of invalid entry Sricharan R
2014-06-03 7:42 ` Sricharan R [this message]
2014-06-03 7:43 ` [PATCH 08/14] irqchip: crossbar: change the goto naming Sricharan R
2014-06-03 7:43 ` [PATCH 09/14] irqchip: crossbar: set cb pointer to null in case of error Sricharan R
2014-06-03 7:43 ` [PATCH 10/14] irqchip: crossbar: Add kerneldoc for crossbar_domain_unmap callback Sricharan R
2014-06-03 7:43 ` [PATCH 11/14] irqchip: crossbar: introduce ti,max-crossbar-sources to identify valid crossbar mapping Sricharan R
2014-06-03 7:43 ` [PATCH 12/14] irqchip: crossbar: introduce centralized check for crossbar write Sricharan R
2014-06-03 7:43 ` [PATCH 13/14] Documentation: dt: OMAP: crossbar: add description for interrupt consumer Sricharan R
2014-06-03 7:43 ` [PATCH 14/14] irqchip: crossbar allow for quirky hardware with direct hardwiring of GIC Sricharan R
2014-06-03 18:28 ` [PATCH 00/14] irqchip: crossbar: driver fixes Thomas Gleixner
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=1401781386-4982-8-git-send-email-r.sricharan@ti.com \
--to=r.sricharan@ti.com \
--cc=devicetree@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=nm@ti.com \
--cc=rnayak@ti.com \
--cc=santosh.shilimkar@ti.com \
--cc=tglx@linutronix.de \
--cc=tony@atomide.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 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).