Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -413,12 +413,12 @@ void gpiochip_set_chained_irqchip(struct gpio_chip *gpiochip,
		return;
	}

	irq_set_chained_handler(parent_irq, parent_handler);
	/*
	 * The parent irqchip is already using the chip_data for this
	 * irqchip, so our callbacks simply use the handler_data.
	 */
	irq_set_handler_data(parent_irq, gpiochip);
	irq_set_chained_handler(parent_irq, parent_handler);
}
EXPORT_SYMBOL_GPL(gpiochip_set_chained_irqchip);