|
Borislav Petkov |
26884d |
From: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
|
|
Borislav Petkov |
26884d |
Date: Thu, 19 May 2022 20:34:14 -0700
|
|
Borislav Petkov |
26884d |
Subject: x86/speculation/mmio: Reuse SRBDS mitigation for SBDS
|
|
Borislav Petkov |
26884d |
Git-commit: a992b8a4682f119ae035a01b40d4d0665c4a2875
|
|
Borislav Petkov |
26884d |
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
|
|
Borislav Petkov |
26884d |
Patch-mainline: Queued in tip for v5.19
|
|
Borislav Petkov |
26884d |
References: bsc#1199650 CVE-2022-21166 CVE-2022-21127 CVE-2022-21123 CVE-2022-21125 CVE-2022-21180
|
|
Borislav Petkov |
26884d |
|
|
Borislav Petkov |
26884d |
The Shared Buffers Data Sampling (SBDS) variant of Processor MMIO Stale
|
|
Borislav Petkov |
26884d |
Data vulnerabilities may expose RDRAND, RDSEED and SGX EGETKEY data.
|
|
Borislav Petkov |
26884d |
Mitigation for this is added by a microcode update.
|
|
Borislav Petkov |
26884d |
|
|
Borislav Petkov |
26884d |
As some of the implications of SBDS are similar to SRBDS, SRBDS mitigation
|
|
Borislav Petkov |
26884d |
infrastructure can be leveraged by SBDS. Set X86_BUG_SRBDS and use SRBDS
|
|
Borislav Petkov |
26884d |
mitigation.
|
|
Borislav Petkov |
26884d |
|
|
Borislav Petkov |
26884d |
Mitigation is enabled by default; use srbds=off to opt-out. Mitigation
|
|
Borislav Petkov |
26884d |
status can be checked from below file:
|
|
Borislav Petkov |
26884d |
|
|
Borislav Petkov |
26884d |
/sys/devices/system/cpu/vulnerabilities/srbds
|
|
Borislav Petkov |
26884d |
|
|
Borislav Petkov |
26884d |
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
|
|
Borislav Petkov |
26884d |
Signed-off-by: Borislav Petkov <bp@suse.de>
|
|
Borislav Petkov |
26884d |
---
|
|
Borislav Petkov |
26884d |
arch/x86/kernel/cpu/common.c | 15 +++++++++++----
|
|
Borislav Petkov |
26884d |
1 file changed, 11 insertions(+), 4 deletions(-)
|
|
Borislav Petkov |
26884d |
|
|
Borislav Petkov |
26884d |
--- a/arch/x86/kernel/cpu/common.c
|
|
Borislav Petkov |
26884d |
+++ b/arch/x86/kernel/cpu/common.c
|
|
Borislav Petkov |
26884d |
@@ -1095,6 +1095,8 @@ static const __initconst struct x86_cpu_
|
|
Borislav Petkov |
26884d |
#define SRBDS BIT(0)
|
|
Borislav Petkov |
26884d |
/* CPU is affected by X86_BUG_MMIO_STALE_DATA */
|
|
Borislav Petkov |
26884d |
#define MMIO BIT(1)
|
|
Borislav Petkov |
26884d |
+/* CPU is affected by Shared Buffers Data Sampling (SBDS), a variant of X86_BUG_MMIO_STALE_DATA */
|
|
Borislav Petkov |
26884d |
+#define MMIO_SBDS BIT(2)
|
|
Borislav Petkov |
26884d |
|
|
Borislav Petkov |
26884d |
static const struct x86_cpu_id cpu_vuln_blacklist[] __initconst = {
|
|
Borislav Petkov |
26884d |
VULNBL_INTEL_STEPPINGS(IVYBRIDGE, X86_STEPPING_ANY, SRBDS),
|
|
Borislav Petkov |
26884d |
@@ -1116,11 +1118,12 @@ static const struct x86_cpu_id cpu_vuln_
|
|
Borislav Petkov |
26884d |
VULNBL_INTEL_STEPPINGS(KABYLAKE_L, X86_STEPPINGS(0x0, 0x8), SRBDS),
|
|
Borislav Petkov |
26884d |
VULNBL_INTEL_STEPPINGS(KABYLAKE, X86_STEPPINGS(0x9, 0xD), SRBDS | MMIO),
|
|
Borislav Petkov |
26884d |
VULNBL_INTEL_STEPPINGS(KABYLAKE, X86_STEPPINGS(0x0, 0x8), SRBDS),
|
|
Borislav Petkov |
26884d |
- VULNBL_INTEL_STEPPINGS(ICELAKE_L, X86_STEPPINGS(0x5, 0x5), MMIO),
|
|
Borislav Petkov |
26884d |
+ VULNBL_INTEL_STEPPINGS(ICELAKE_L, X86_STEPPINGS(0x5, 0x5), MMIO | MMIO_SBDS),
|
|
Borislav Petkov |
26884d |
VULNBL_INTEL_STEPPINGS(ICELAKE_D, X86_STEPPINGS(0x1, 0x1), MMIO),
|
|
Borislav Petkov |
26884d |
VULNBL_INTEL_STEPPINGS(ICELAKE_X, X86_STEPPINGS(0x4, 0x6), MMIO),
|
|
Borislav Petkov |
26884d |
- VULNBL_INTEL_STEPPINGS(COMETLAKE, BIT(2) | BIT(3) | BIT(5), MMIO),
|
|
Borislav Petkov |
26884d |
- VULNBL_INTEL_STEPPINGS(COMETLAKE_L, X86_STEPPINGS(0x0, 0x1), MMIO),
|
|
Borislav Petkov |
26884d |
+ VULNBL_INTEL_STEPPINGS(COMETLAKE, BIT(2) | BIT(3) | BIT(5), MMIO | MMIO_SBDS),
|
|
Borislav Petkov |
26884d |
+ VULNBL_INTEL_STEPPINGS(COMETLAKE_L, X86_STEPPINGS(0x1, 0x1), MMIO | MMIO_SBDS),
|
|
Borislav Petkov |
26884d |
+ VULNBL_INTEL_STEPPINGS(COMETLAKE_L, X86_STEPPINGS(0x0, 0x0), MMIO),
|
|
Borislav Petkov |
26884d |
VULNBL_INTEL_STEPPINGS(ATOM_TREMONT_D, X86_STEPPING_ANY, MMIO),
|
|
Borislav Petkov |
26884d |
{}
|
|
Borislav Petkov |
26884d |
};
|
|
Borislav Petkov |
26884d |
@@ -1200,10 +1203,14 @@ static void __init cpu_set_bug_bits(stru
|
|
Borislav Petkov |
26884d |
/*
|
|
Borislav Petkov |
26884d |
* SRBDS affects CPUs which support RDRAND or RDSEED and are listed
|
|
Borislav Petkov |
26884d |
* in the vulnerability blacklist.
|
|
Borislav Petkov |
26884d |
+ *
|
|
Borislav Petkov |
26884d |
+ * Some of the implications and mitigation of Shared Buffers Data
|
|
Borislav Petkov |
26884d |
+ * Sampling (SBDS) are similar to SRBDS. Give SBDS same treatment as
|
|
Borislav Petkov |
26884d |
+ * SRBDS.
|
|
Borislav Petkov |
26884d |
*/
|
|
Borislav Petkov |
26884d |
if ((cpu_has(c, X86_FEATURE_RDRAND) ||
|
|
Borislav Petkov |
26884d |
cpu_has(c, X86_FEATURE_RDSEED)) &&
|
|
Borislav Petkov |
26884d |
- cpu_matches(cpu_vuln_blacklist, SRBDS))
|
|
Borislav Petkov |
26884d |
+ cpu_matches(cpu_vuln_blacklist, SRBDS | MMIO_SBDS))
|
|
Borislav Petkov |
26884d |
setup_force_cpu_bug(X86_BUG_SRBDS);
|
|
Borislav Petkov |
26884d |
|
|
Borislav Petkov |
26884d |
/*
|