| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Thu, 3 May 2012 12:22:06 +0200 |
| Subject: gpio: mpc8xxx: Prevent NULL pointer deref in demux handler |
| |
| commit d6de85e85edcc38c9edcde45a0a568818fcddc13 upstream. |
| |
| commit cfadd838(powerpc/8xxx: Fix interrupt handling in MPC8xxx GPIO |
| driver) added an unconditional call of chip->irq_eoi() to the demux |
| handler. |
| |
| This leads to a NULL pointer derefernce on MPC512x platforms which use |
| this driver as well. |
| |
| Make it conditional. |
| |
| Reported-by: Thomas Wucher <thwucher@linutronix.de> |
| Signed-off-by: Thomas Gleixner <tglx@linutronix.de> |
| Cc: Felix Radensky <felix@embedded-sol.com> |
| Cc: Kumar Gala <galak@kernel.crashing.org> |
| Cc: Grant Likely <grant.likely@secretlab.ca> |
| Signed-off-by: Grant Likely <grant.likely@secretlab.ca> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/gpio/gpio-mpc8xxx.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c |
| index e6568c1..5a1817e 100644 |
| --- a/drivers/gpio/gpio-mpc8xxx.c |
| +++ b/drivers/gpio/gpio-mpc8xxx.c |
| @@ -163,7 +163,8 @@ static void mpc8xxx_gpio_irq_cascade(unsigned int irq, struct irq_desc *desc) |
| if (mask) |
| generic_handle_irq(irq_linear_revmap(mpc8xxx_gc->irq, |
| 32 - ffs(mask))); |
| - chip->irq_eoi(&desc->irq_data); |
| + if (chip->irq_eoi) |
| + chip->irq_eoi(&desc->irq_data); |
| } |
| |
| static void mpc8xxx_irq_unmask(struct irq_data *d) |