Skip to contentSkip to conversation

sh: fix INTC to use set_irq_chained_handler() for redirects

PATCH New Magnus Damm 1 participant 1 message Feb 9, 2010 SuperH

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 sh: fix INTC to use set_irq_chained_handler() for redirects

From: Magnus Damm <[email protected]>

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.

---

 drivers/sh/intc.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/sh/intc.c +2 -2
@@ -896,8 +896,8 @@ void __init register_intc_controller(str
 			vect2->enum_id = 0;
 
 			/* redirect this interrupts to the first one */
-			set_irq_chip_and_handler_name(irq2, &d->chip,
-					intc_redirect_irq, "redirect");
+			set_irq_chained_handler(irq2, intc_redirect_irq);
+			set_irq_chip(irq2, &d->chip);
 			set_irq_data(irq2, (void *)irq);
 		}
 	}