Commit 02a4c496 authored by Jarkko Nikula's avatar Jarkko Nikula Committed by Greg Kroah-Hartman

gpio: Fix potential NULL handler data in chained irqchip handler

commit 324b0398 upstream.

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().
Reviewed-by: default avatarAlexandre Courbot <acourbot@nvidia.com>
Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 47155f7c
...@@ -1368,12 +1368,12 @@ void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip, ...@@ -1368,12 +1368,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