]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
powerpc/irq: Check desc in handle_one_irq and expand generic_handle_irq
authorMilton Miller <miltonm@bga.com>
Tue, 24 May 2011 20:34:18 +0000 (20:34 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Thu, 26 May 2011 03:38:59 +0000 (13:38 +1000)
commit2e455257d143f54b44701e947a092d513889d01c
tree3ec9c640c1bce6b2ea78accc0b0b962f97595e0c
parent3d1b5e206a4f0ce46f2aa138590738c5d8e118ac
powerpc/irq: Check desc in handle_one_irq and expand generic_handle_irq

Look up the descriptor and check that it is found in handle_one_irq
before checking if we are on the irq stack, and call the handler
directly using the descriptor if we are on the stack.

We need check irq_to_desc finds the descriptor to avoid a NULL
pointer dereference.  It could have failed because the number from
ppc_md.get_irq was above NR_IRQS, or various exceptional conditions
with sparse irqs (eg race conditions while freeing an irq if its was
not shutdown in the controller).

fe12bc2c99 (genirq: Uninline and sanity check generic_handle_irq())
moved generic_handle_irq out of line to allow its use by interrupt
controllers in modules.  However, handle_one_irq is core arch code.
It already knows the details of struct irq_desc and handling irqs in
the nested irq case.  This will avoid the extra stack frame to return
the value we don't check.

Signed-off-by: Milton Miller <miltonm@bga.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/kernel/irq.c