diff options
author | Magnus Damm <damm@opensource.se> | 2010-02-09 02:17:20 -0500 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2010-02-09 04:24:31 -0500 |
commit | e6f077592d1de2f6a4fc760e7b5d6f20b37d3a27 (patch) | |
tree | b8d6e785f2de334321a956d86e42777b71b47ce4 /drivers/sh/intc.c | |
parent | 3844eadcfd2ba975110e3ca8479efa8c093129ce (diff) |
sh: fix INTC to use set_irq_chained_handler() for redirects
This patch updates the shared INTC code to use
set_irq_chained_handler() for intc_redirect_irq().
With this in place request_irq() on a merged irq
which has been redirected will now return -EINVAL
instead of 0 together with a crash. This thanks to
the protection of the IRQ_NOREQUEST flag set for
chained interrupt handlers.
Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'drivers/sh/intc.c')
-rw-r--r-- | drivers/sh/intc.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/sh/intc.c b/drivers/sh/intc.c index 3a687396dfa2..66594eb4477d 100644 --- a/drivers/sh/intc.c +++ b/drivers/sh/intc.c | |||
@@ -896,8 +896,8 @@ void __init register_intc_controller(struct intc_desc *desc) | |||
896 | vect2->enum_id = 0; | 896 | vect2->enum_id = 0; |
897 | 897 | ||
898 | /* redirect this interrupts to the first one */ | 898 | /* redirect this interrupts to the first one */ |
899 | set_irq_chip_and_handler_name(irq2, &d->chip, | 899 | set_irq_chained_handler(irq2, intc_redirect_irq); |
900 | intc_redirect_irq, "redirect"); | 900 | set_irq_chip(irq2, &d->chip); |
901 | set_irq_data(irq2, (void *)irq); | 901 | set_irq_data(irq2, (void *)irq); |
902 | } | 902 | } |
903 | } | 903 | } |