]> git.baikalelectronics.ru Git - kernel.git/commitdiff
x86/speculation: Fix SPEC_CTRL write on SMT state change
authorJosh Poimboeuf <jpoimboe@kernel.org>
Mon, 3 Oct 2022 13:10:22 +0000 (10:10 -0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 7 Oct 2022 07:16:55 +0000 (09:16 +0200)
commit aa323f15f0a42bca05e56cd60b7978c8761c69df upstream.

If the SMT state changes, SSBD might get accidentally disabled.  Fix
that.

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kernel/cpu/bugs.c

index 5f8ea848d30b0f66d63cc2139efefe72e008ab7c..6c6fe963fd0ef79dfda0393257d0ff7de74b4895 100644 (file)
@@ -1335,7 +1335,8 @@ static void __init spectre_v2_select_mitigation(void)
 
 static void update_stibp_msr(void * __unused)
 {
-       write_spec_ctrl_current(x86_spec_ctrl_base, true);
+       u64 val = spec_ctrl_current() | (x86_spec_ctrl_base & SPEC_CTRL_STIBP);
+       write_spec_ctrl_current(val, true);
 }
 
 /* Update x86_spec_ctrl_base in case SMT state changed. */