Commit 324b0398 authored by Jarkko Nikula's avatar Jarkko Nikula Committed by Linus Walleij

gpio: Fix potential NULL handler data in chained irqchip handler

There is possibility with misconfigured pins that interrupt occurs instantly
after setting irq_set_chained_handler() in gpiochip_set_chained_irqchip().
Now if handler gets called before irq_set_handler_data() the handler gets
NULL handler data.

Fix this by moving irq_set_handler_data() call before
irq_set_chained_handler() in gpiochip_set_chained_irqchip().

Cc: Stable <stable@vger.kernel.org> # 3.15+
Reviewed-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
parent 72f908c8
...@@ -413,12 +413,12 @@ void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip, ...@@ -413,12 +413,12 @@ void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip,
return; return;
} }
irq_set_chained_handler(parent_irq, parent_handler);
/* /*
* The parent irqchip is already using the chip_data for this * The parent irqchip is already using the chip_data for this
* irqchip, so our callbacks simply use the handler_data. * irqchip, so our callbacks simply use the handler_data.
*/ */
irq_set_handler_data(parent_irq, gpiochip); irq_set_handler_data(parent_irq, gpiochip);
irq_set_chained_handler(parent_irq, parent_handler);
} }
EXPORT_SYMBOL_GPL(gpiochip_set_chained_irqchip); EXPORT_SYMBOL_GPL(gpiochip_set_chained_irqchip);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment