|
Borislav Petkov |
155be7 |
From: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
|
|
Borislav Petkov |
155be7 |
Date: Thu, 19 May 2022 20:30:12 -0700
|
|
Borislav Petkov |
155be7 |
Subject: x86/bugs: Group MDS, TAA & Processor MMIO Stale Data mitigations
|
|
Borislav Petkov |
155be7 |
Git-commit: e5925fb867290ee924fcf2fe3ca887b792714366
|
|
Borislav Petkov |
155be7 |
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git
|
|
Borislav Petkov |
155be7 |
Patch-mainline: Queued in tip for v5.19
|
|
Borislav Petkov |
155be7 |
References: bsc#1199650 CVE-2022-21166 CVE-2022-21127 CVE-2022-21123 CVE-2022-21125 CVE-2022-21180
|
|
Borislav Petkov |
155be7 |
|
|
Borislav Petkov |
155be7 |
MDS, TAA and Processor MMIO Stale Data mitigations rely on clearing CPU
|
|
Borislav Petkov |
155be7 |
buffers. Moreover, status of these mitigations affects each other.
|
|
Borislav Petkov |
155be7 |
During boot, it is important to maintain the order in which these
|
|
Borislav Petkov |
155be7 |
mitigations are selected. This is especially true for
|
|
Borislav Petkov |
155be7 |
md_clear_update_mitigation() that needs to be called after MDS, TAA and
|
|
Borislav Petkov |
155be7 |
Processor MMIO Stale Data mitigation selection is done.
|
|
Borislav Petkov |
155be7 |
|
|
Borislav Petkov |
155be7 |
Introduce md_clear_select_mitigation(), and select all these mitigations
|
|
Borislav Petkov |
155be7 |
from there. This reflects relationships between these mitigations and
|
|
Borislav Petkov |
155be7 |
ensures proper ordering.
|
|
Borislav Petkov |
155be7 |
|
|
Borislav Petkov |
155be7 |
Signed-off-by: Pawan Gupta <pawan.kumar.gupta@linux.intel.com>
|
|
Borislav Petkov |
155be7 |
Signed-off-by: Borislav Petkov <bp@suse.de>
|
|
Borislav Petkov |
155be7 |
---
|
|
Borislav Petkov |
155be7 |
arch/x86/kernel/cpu/bugs.c | 26 ++++++++++++++++----------
|
|
Borislav Petkov |
155be7 |
1 file changed, 16 insertions(+), 10 deletions(-)
|
|
Borislav Petkov |
155be7 |
|
|
Borislav Petkov |
155be7 |
--- a/arch/x86/kernel/cpu/bugs.c
|
|
Borislav Petkov |
155be7 |
+++ b/arch/x86/kernel/cpu/bugs.c
|
|
Borislav Petkov |
155be7 |
@@ -42,6 +42,7 @@ static void __init ssb_select_mitigation
|
|
Borislav Petkov |
155be7 |
static void __init l1tf_select_mitigation(void);
|
|
Borislav Petkov |
155be7 |
static void __init mds_select_mitigation(void);
|
|
Borislav Petkov |
155be7 |
static void __init md_clear_update_mitigation(void);
|
|
Borislav Petkov |
155be7 |
+static void __init md_clear_select_mitigation(void);
|
|
Borislav Petkov |
155be7 |
static void __init taa_select_mitigation(void);
|
|
Borislav Petkov |
155be7 |
static void __init mmio_select_mitigation(void);
|
|
Borislav Petkov |
155be7 |
static void __init srbds_select_mitigation(void);
|
|
Borislav Petkov |
155be7 |
@@ -114,18 +115,9 @@ void __init check_bugs(void)
|
|
Borislav Petkov |
155be7 |
spectre_v2_select_mitigation();
|
|
Borislav Petkov |
155be7 |
ssb_select_mitigation();
|
|
Borislav Petkov |
155be7 |
l1tf_select_mitigation();
|
|
Borislav Petkov |
155be7 |
- mds_select_mitigation();
|
|
Borislav Petkov |
155be7 |
- taa_select_mitigation();
|
|
Borislav Petkov |
155be7 |
- mmio_select_mitigation();
|
|
Borislav Petkov |
155be7 |
+ md_clear_select_mitigation();
|
|
Borislav Petkov |
155be7 |
srbds_select_mitigation();
|
|
Borislav Petkov |
155be7 |
|
|
Borislav Petkov |
155be7 |
- /*
|
|
Borislav Petkov |
155be7 |
- * As MDS, TAA and MMIO Stale Data mitigations are inter-related, update
|
|
Borislav Petkov |
155be7 |
- * and print their mitigation after MDS, TAA and MMIO Stale Data
|
|
Borislav Petkov |
155be7 |
- * mitigation selection is done.
|
|
Borislav Petkov |
155be7 |
- */
|
|
Borislav Petkov |
155be7 |
- md_clear_update_mitigation();
|
|
Borislav Petkov |
155be7 |
-
|
|
Borislav Petkov |
155be7 |
arch_smt_update();
|
|
Borislav Petkov |
155be7 |
|
|
Borislav Petkov |
155be7 |
#ifdef CONFIG_X86_32
|
|
Borislav Petkov |
155be7 |
@@ -504,6 +496,20 @@ out:
|
|
Borislav Petkov |
155be7 |
pr_info("MMIO Stale Data: %s\n", mmio_strings[mmio_mitigation]);
|
|
Borislav Petkov |
155be7 |
}
|
|
Borislav Petkov |
155be7 |
|
|
Borislav Petkov |
155be7 |
+static void __init md_clear_select_mitigation(void)
|
|
Borislav Petkov |
155be7 |
+{
|
|
Borislav Petkov |
155be7 |
+ mds_select_mitigation();
|
|
Borislav Petkov |
155be7 |
+ taa_select_mitigation();
|
|
Borislav Petkov |
155be7 |
+ mmio_select_mitigation();
|
|
Borislav Petkov |
155be7 |
+
|
|
Borislav Petkov |
155be7 |
+ /*
|
|
Borislav Petkov |
155be7 |
+ * As MDS, TAA and MMIO Stale Data mitigations are inter-related, update
|
|
Borislav Petkov |
155be7 |
+ * and print their mitigation after MDS, TAA and MMIO Stale Data
|
|
Borislav Petkov |
155be7 |
+ * mitigation selection is done.
|
|
Borislav Petkov |
155be7 |
+ */
|
|
Borislav Petkov |
155be7 |
+ md_clear_update_mitigation();
|
|
Borislav Petkov |
155be7 |
+}
|
|
Borislav Petkov |
155be7 |
+
|
|
Borislav Petkov |
155be7 |
#undef pr_fmt
|
|
Borislav Petkov |
155be7 |
#define pr_fmt(fmt) "SRBDS: " fmt
|
|
Borislav Petkov |
155be7 |
|