x86/ioapic: Prevent NULL pointer dereference in setup_ioapic_dest()
authorWerner Pawlitschko <werner.pawlitschko@arcor.de>
Tue, 27 Oct 2015 00:08:04 +0000 (09:08 +0900)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 27 Oct 2015 00:18:34 +0000 (09:18 +0900)
commitababae44108b0e94b58eef6cb5bd830bd040a47f
tree48ae676a2075db84e5c0357220d9badc33993cee
parent298a96c12b2d8fd845ae0c2c21c0a1c0b470f99e
x86/ioapic: Prevent NULL pointer dereference in setup_ioapic_dest()

Commit 4857c91f0d19 changed the way how irq affinity is setup in
setup_ioapic_dest() from using the core helper function to
unconditionally calling the irq_set_affinity() callback of the
underlying irq chip.

That results in a NULL pointer dereference for the rare case where the
underlying irq chip is lapic_chip which has no irq_set_affinity()
callback. lapic_chip is occasionally used for the timer interrupt (irq
0).

The fix is simple: Check the availability of the callback instead of
calling it unconditionally.

Fixes: 4857c91f0d19 "x86/ioapic: Force affinity setting in setup_ioapic_dest()"
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
arch/x86/kernel/apic/io_apic.c