[PATCH v3 0/2] cpu/hotplug: Fix cpuhp_cpu_state used before init

From: Steven Price
Date: Mon Apr 11 2022 - 11:22:48 EST


Currently it's possible to trigger a case where the cpuhp_cpu_state::cpu
member is used before it has been initialised. This can cause CPU 0 to
be erroneously marked as dying and trigger a scheduler panic (full
details in v1[1]).

The two patches here fix the root cause by removing the 'cpu' member
altogether and to prevent similar confusion in the future ensure that
the cpuhp_cpu_state structures are initialised before any hotplugging
occurs.

Changes since v2[2]:
* Remove the cpu member altogether (first patch)
* Move the initialisation of cpuhp_cpu_state as suggested by tglx
(second patch)

[1] https://lore.kernel.org/all/20220225134918.105796-1-steven.price@xxxxxxx/
[2] https://lore.kernel.org/all/20220316153637.288199-1-steven.price@xxxxxxx/

Steven Price (2):
cpu/hotplug: Remove the 'cpu' member of cpuhp_cpu_state
cpu/hotplug: Initialise all cpuhp_cpu_state structs earlier

kernel/cpu.c | 58 ++++++++++++++++++++++++++++------------------------
1 file changed, 31 insertions(+), 27 deletions(-)

--
2.25.1