linux/arch/x86/kernel/cpu/mce
Chuansheng Liu 978370956d x86/mce/therm_throt: Do not access uninitialized therm_work
It is relatively easy to trigger the following boot splat on an Ice Lake
client platform. The call stack is like:

  kernel BUG at kernel/timer/timer.c:1152!

  Call Trace:
  __queue_delayed_work
  queue_delayed_work_on
  therm_throt_process
  intel_thermal_interrupt
  ...

The reason is that a CPU's thermal interrupt is enabled prior to
executing its hotplug onlining callback which will initialize the
throttling workqueues.

Such a race can lead to therm_throt_process() accessing an uninitialized
therm_work, leading to the above BUG at a very early bootup stage.

Therefore, unmask the thermal interrupt vector only after having setup
the workqueues completely.

 [ bp: Heavily massage commit message and correct comment formatting. ]

Fixes: f6656208f0 ("x86/mce/therm_throt: Optimize notifications of thermal throttle")
Signed-off-by: Chuansheng Liu <chuansheng.liu@intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Tony Luck <tony.luck@intel.com>
Link: https://lkml.kernel.org/r/20200107004116.59353-1-chuansheng.liu@intel.com
2020-01-15 11:31:33 +01:00
..
amd.c x86/MCE/AMD: Allow Reserved types to be overwritten in smca_banks[] 2019-12-17 09:39:53 +01:00
apei.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
core.c x86/mce: Fix possibly incorrect severity calculation on AMD 2019-12-17 09:39:53 +01:00
dev-mcelog.c treewide: Add SPDX license identifier for missed files 2019-05-21 10:50:45 +02:00
genpool.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 437 2019-06-05 17:37:17 +02:00
inject.c x86/mce: Do not check return value of debugfs_create functions 2019-06-14 16:04:21 +02:00
intel.c x86/mce: Add Xeon Icelake to list of CPUs that support PPIN 2019-11-01 17:29:36 +01:00
internal.h x86/mce: Add Zhaoxin LMCE support 2019-10-01 12:33:33 +02:00
Makefile
p5.c
severity.c x86/mce: Don't check for the overflow bit on action optional machine checks 2019-08-05 09:34:02 +02:00
therm_throt.c x86/mce/therm_throt: Do not access uninitialized therm_work 2020-01-15 11:31:33 +01:00
threshold.c
winchip.c