genirq: Prevent resend to interrupts marked IRQ_NESTED_THREAD
authorThomas Gleixner <tglx@linutronix.de>
Thu, 16 Jul 2015 12:10:17 +0000 (14:10 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 10 Aug 2015 19:21:53 +0000 (12:21 -0700)
commit8ee1239a023a9a8bdbb1eaeba4e956204beedacd
treed5f9400b9adea4083d8b23905e729ff49556361c
parent39a0ac96dfeeda6e22748be7beac0813a544f511
genirq: Prevent resend to interrupts marked IRQ_NESTED_THREAD

commit 75a06189fc508a2acf470b0b12710362ffb2c4b1 upstream.

The resend mechanism happily calls the interrupt handler of interrupts
which are marked IRQ_NESTED_THREAD from softirq context. This can
result in crashes because the interrupt handler is not the proper way
to invoke the device handlers. They must be invoked via
handle_nested_irq.

Prevent the resend even if the interrupt has no valid parent irq
set. Its better to have a lost interrupt than a crashing machine.

Reported-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
kernel/irq/resend.c