linux/arch
Sean Christopherson 4dedaa73c4 x86/apic/x2apic: Fix a NULL pointer deref when handling a dying cpu
commit 7a22e03b0c upstream.

Check that the per-cpu cluster mask pointer has been set prior to
clearing a dying cpu's bit.  The per-cpu pointer is not set until the
target cpu reaches smp_callin() during CPUHP_BRINGUP_CPU, whereas the
teardown function, x2apic_dead_cpu(), is associated with the earlier
CPUHP_X2APIC_PREPARE.  If an error occurs before the cpu is awakened,
e.g. if do_boot_cpu() itself fails, x2apic_dead_cpu() will dereference
the NULL pointer and cause a panic.

  smpboot: do_boot_cpu failed(-22) to wakeup CPU#1
  BUG: kernel NULL pointer dereference, address: 0000000000000008
  RIP: 0010:x2apic_dead_cpu+0x1a/0x30
  Call Trace:
   cpuhp_invoke_callback+0x9a/0x580
   _cpu_up+0x10d/0x140
   do_cpu_up+0x69/0xb0
   smp_init+0x63/0xa9
   kernel_init_freeable+0xd7/0x229
   ? rest_init+0xa0/0xa0
   kernel_init+0xa/0x100
   ret_from_fork+0x35/0x40

Fixes: 023a611748 ("x86/apic/x2apic: Simplify cluster management")
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lkml.kernel.org/r/20191001205019.5789-1-sean.j.christopherson@intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-10-29 09:20:04 +01:00
..
alpha alpha: Fix Eiger NR_IRQS to 128 2019-02-20 10:25:47 +01:00
arc ARC: mm: SIGSEGV userspace trying to access kernel virtual memory 2019-09-16 08:22:14 +02:00
arm xen/efi: Set nonblocking callbacks 2019-10-29 09:19:33 +01:00
arm64 arm64: Enable workaround for Cavium TX2 erratum 219 when running SMT 2019-10-29 09:20:01 +01:00
c6x
h8300 h8300: use cc-cross-prefix instead of hardcoding h8300-unknown-linux- 2019-04-05 22:32:55 +02:00
hexagon
ia64 ia64:unwind: fix double free for mod->arch.init_unw_table 2019-10-05 13:09:38 +02:00
m68k m68k: Prevent some compiler warnings in Coldfire builds 2019-10-05 13:09:43 +02:00
microblaze
mips MIPS: tlbex: Fix build_restore_pagemask KScratch restore 2019-10-29 09:19:47 +01:00
nds32
nios2
openrisc
parisc parisc: Fix vmap memory leak in ioremap()/iounmap() 2019-10-29 09:20:00 +01:00
powerpc powerpc/book3s64/radix: Rename CPU_FTR_P9_TLBIE_BUG feature flag 2019-10-11 18:21:27 +02:00
riscv riscv: Avoid interrupts being erroneously enabled in handle_exception() 2019-10-11 18:21:29 +02:00
s390 s390/topology: avoid firing events before kobjs are created 2019-10-11 18:20:42 +02:00
sh sh: kernel: hw_breakpoint: Fix missing break in switch statement 2019-08-25 10:47:42 +02:00
sparc sparc: perf: fix updated event period in response to PERF_EVENT_IOC_PERIOD 2019-06-25 11:35:57 +08:00
um um: Silence lockdep complaint about mmap_sem 2019-07-31 07:27:04 +02:00
unicore32
x86 x86/apic/x2apic: Fix a NULL pointer deref when handling a dying cpu 2019-10-29 09:20:04 +01:00
xtensa xtensa: drop EXPORT_SYMBOL for outs*/ins* 2019-10-29 09:20:00 +01:00
.gitignore
Kconfig jump_label: move 'asm goto' support test to Kconfig 2019-06-04 08:02:34 +02:00