diff options
author | Rob Herring <rob.herring@calxeda.com> | 2011-12-12 09:59:14 -0600 |
---|---|---|
committer | Rob Herring <rob.herring@calxeda.com> | 2011-12-28 08:26:06 -0600 |
commit | 93797d87d63d36404907640e4e20bb976bff4744 (patch) | |
tree | b77b8c98e7fe64b05eada97ba8c0418ac2115c64 | |
parent | 3ecdd0515287afbcde352077d59e4028dcfbb685 (diff) | |
download | talos-op-linux-93797d87d63d36404907640e4e20bb976bff4744.tar.gz talos-op-linux-93797d87d63d36404907640e4e20bb976bff4744.zip |
irq: check domain hwirq range for DT translate
A DT node may have more than 1 domain associated with it, so make sure
the hwirq number is within range when doing DT translation.
Signed-off-by: Rob Herring <rob.herring@calxeda.com>
Acked-by: Grant Likely <grant.likely@secretlab.ca>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r-- | kernel/irq/irqdomain.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c index 200ce832c585..8bd7479b8390 100644 --- a/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c @@ -135,6 +135,9 @@ int irq_domain_simple_dt_translate(struct irq_domain *d, return -EINVAL; if (intsize < 1) return -EINVAL; + if (d->nr_irq && ((intspec[0] < d->hwirq_base) || + (intspec[0] >= d->hwirq_base + d->nr_irq))) + return -EINVAL; *out_hwirq = intspec[0]; *out_type = IRQ_TYPE_NONE; |