diff options
author | Josh Poimboeuf <jpoimboe@kernel.org> | 2022-06-15 00:16:07 +0300 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2022-06-27 11:34:00 +0300 |
commit | 56aa4d221f1ee2c3a49b45b800778ec6e0ab73c5 (patch) | |
tree | a6e1ada3a4703390ea0f2c874fc0e8552acf050c /arch/x86 | |
parent | e6aa13622ea8283cc699cac5d018cc40a2ba2010 (diff) | |
download | linux-56aa4d221f1ee2c3a49b45b800778ec6e0ab73c5.tar.xz |
x86/speculation: Fix SPEC_CTRL write on SMT state change
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>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/kernel/cpu/bugs.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/kernel/cpu/bugs.c b/arch/x86/kernel/cpu/bugs.c index 108bd74289c5..9b80059c4e02 100644 --- a/arch/x86/kernel/cpu/bugs.c +++ b/arch/x86/kernel/cpu/bugs.c @@ -1458,7 +1458,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. */ |