diff options
author | Tomoki Sekiyama <tomoki.sekiyama.qu@hitachi.com> | 2012-05-28 18:09:18 +0900 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2012-06-06 12:03:25 +0200 |
commit | f6175f5bfb4c9f2ed32758c95f765b529b1a7f15 (patch) | |
tree | 7c33b47cea87463f4d51f80064b699bafeb2a178 /arch/x86/boot/header.S | |
parent | 55c844a4dd16a4d1fdc0cf2a283ec631a02ec448 (diff) |
x86/ioapic: Fix NULL pointer dereference on CPU hotplug after disabling irqs
In current Linux, percpu variable `vector_irq' is not cleared on
offlined cpus while disabling devices' irqs. If the cpu that has
the disabled irqs in vector_irq is hotplugged,
__setup_vector_irq() hits invalid irq vector and may crash.
This bug can be reproduced as following;
# echo 0 > /sys/devices/system/cpu/cpu7/online
# modprobe -r some_driver_using_interrupts # vector_irq@cpu7 uncleared
# echo 1 > /sys/devices/system/cpu/cpu7/online # kernel may crash
This patch fixes this bug by clearing vector_irq in
__clear_irq_vector() even if the cpu is offlined.
Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama.qu@hitachi.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: yrl.pp-manager.tt@hitachi.com
Cc: ltc-kernel@ml.yrl.intra.hitachi.co.jp
Cc: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Cc: Alexander Gordeev <agordeev@redhat.com>
Link: http://lkml.kernel.org/r/4FC340BE.7080101@hitachi.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/boot/header.S')
0 files changed, 0 insertions, 0 deletions