ARM: LPC32xx: Relocate calls to irq_set_chained_handler()
authorRoland Stigge <stigge@antcom.de>
Wed, 7 Nov 2012 12:30:50 +0000 (13:30 +0100)
committerRoland Stigge <stigge@antcom.de>
Wed, 7 Nov 2012 12:30:50 +0000 (13:30 +0100)
commite40ec953b6ac21257760730af8c36e2695e4beac
tree50eb73d7f58fd046455901894b3e620c0ed4d7b4
parent2998b1d3b1ee31e1c21085383226be1b0c496eab
ARM: LPC32xx: Relocate calls to irq_set_chained_handler()

This patch fixes the issue of an access to a yet uninitialized data structure
at the point where irq_set_chained_handler() was called by moving the
respective calls to the end of lpc32xx_init_irq().

The call path was:

irq_set_chained_handler()
-> __irq_set_handler()
-> irq_startup()
-> irq_enable()
-> desc->irq_data.chip->irq_unmask()

at which point lpc32xx_unmask_irq() effectively read desc->irq_data.hwirq which
was only later initialized.

Signed-off-by: Roland Stigge <stigge@antcom.de>
arch/arm/mach-lpc32xx/irq.c