x86/cpu: Re-enable stackprotector
authorThomas Gleixner <tglx@linutronix.de>
Thu, 15 Sep 2022 11:10:43 +0000 (13:10 +0200)
committerPeter Zijlstra <peterz@infradead.org>
Mon, 17 Oct 2022 14:40:56 +0000 (16:40 +0200)
commit2cb15faaedeb67f52f2ddc32b5ca152acfc422c2
tree3285155905adb263c0d1baae94872f622de23cf7
parent1f19e2d50baf6515991844eaa8a84a0b0037da70
x86/cpu: Re-enable stackprotector

Commit 5416c2663517 ("x86: make sure load_percpu_segment has no
stackprotector") disabled the stackprotector for cpu/common.c because of
load_percpu_segment(). Back then the boot stack canary was initialized very
early in start_kernel(). Switching the per CPU area by loading the GDT
caused the stackprotector to fail with paravirt enabled kernels as the
GSBASE was not updated yet. In hindsight a wrong change because it would
have been sufficient to ensure that the canary is the same in both per CPU
areas.

Commit d55535232c3d ("random: move rand_initialize() earlier") moved the
stack canary initialization to a later point in the init sequence. As a
consequence the per CPU stack canary is 0 when switching the per CPU areas,
so there is no requirement anymore to exclude this file.

Add a comment to load_percpu_segment().

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20220915111143.303010511@infradead.org
arch/x86/kernel/cpu/Makefile
arch/x86/kernel/cpu/common.c