Skip to content

Commit 7ba59ec

Browse files
pa1guptasmb49
authored andcommitted
x86/bugs: Warn when "ibrs" mitigation is selected on Enhanced IBRS parts
commit eb23b5e upstream. IBRS mitigation for spectre_v2 forces write to MSR_IA32_SPEC_CTRL at every kernel entry/exit. On Enhanced IBRS parts setting MSR_IA32_SPEC_CTRL[IBRS] only once at boot is sufficient. MSR writes at every kernel entry/exit incur unnecessary performance loss. When Enhanced IBRS feature is present, print a warning about this unnecessary performance loss. Signed-off-by: Pawan Gupta <[email protected]> Signed-off-by: Peter Zijlstra (Intel) <[email protected]> Reviewed-by: Thadeu Lima de Souza Cascardo <[email protected]> Cc: [email protected] Link: https://lore.kernel.org/r/2a5eaf54583c2bfe0edc4fea64006656256cca17.1657814857.git.pawan.kumar.gupta@linux.intel.com Signed-off-by: Thadeu Lima de Souza Cascardo <[email protected]> CVE-2022-29901 Acked-by: Stefan Bader <[email protected]> Acked-by: Tim Gardner <[email protected]> Signed-off-by: Stefan Bader <[email protected]>
1 parent 247fa87 commit 7ba59ec

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

arch/x86/kernel/cpu/bugs.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -851,6 +851,7 @@ static inline const char *spectre_v2_module_string(void) { return ""; }
851851
#define SPECTRE_V2_LFENCE_MSG "WARNING: LFENCE mitigation is not recommended for this CPU, data leaks possible!\n"
852852
#define SPECTRE_V2_EIBRS_EBPF_MSG "WARNING: Unprivileged eBPF is enabled with eIBRS on, data leaks possible via Spectre v2 BHB attacks!\n"
853853
#define SPECTRE_V2_EIBRS_LFENCE_EBPF_SMT_MSG "WARNING: Unprivileged eBPF is enabled with eIBRS+LFENCE mitigation and SMT, data leaks possible via Spectre v2 BHB attacks!\n"
854+
#define SPECTRE_V2_IBRS_PERF_MSG "WARNING: IBRS mitigation selected on Enhanced IBRS CPU, this may cause unnecessary performance loss\n"
854855

855856
#ifdef CONFIG_BPF_SYSCALL
856857
void unpriv_ebpf_notify(int new_state)
@@ -1277,6 +1278,8 @@ static void __init spectre_v2_select_mitigation(void)
12771278

12781279
case SPECTRE_V2_IBRS:
12791280
setup_force_cpu_cap(X86_FEATURE_KERNEL_IBRS);
1281+
if (boot_cpu_has(X86_FEATURE_IBRS_ENHANCED))
1282+
pr_warn(SPECTRE_V2_IBRS_PERF_MSG);
12801283
break;
12811284

12821285
case SPECTRE_V2_LFENCE:

0 commit comments

Comments
 (0)