forked from rpms/kernel
48 lines
1.5 KiB
Diff
48 lines
1.5 KiB
Diff
From abfdcc849a720f36bbb075ee35d64e84314387fe Mon Sep 17 00:00:00 2001
|
|
From: Borislav Petkov <bp@suse.de>
|
|
Date: Wed, 25 May 2022 18:12:31 +0200
|
|
Subject: [PATCH 06/36] x86/microcode: Taint and warn on late loading
|
|
|
|
Warn before it is attempted and taint the kernel. Late loading microcode
|
|
can lead to malfunction of the kernel when the microcode update changes
|
|
behaviour. There is no way for the kernel to determine whether its safe or
|
|
not.
|
|
|
|
Signed-off-by: Borislav Petkov <bp@suse.de>
|
|
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
|
|
Link: https://lore.kernel.org/r/20220525161232.14924-4-bp@alien8.de
|
|
|
|
(cherry picked from commit d23d33ea0fcdc4bbb484990bf53867f99c63ccab)
|
|
Signed-off-by: Mridula Shastry <mridula.c.shastry@oracle.com>
|
|
Reviewed-by: Todd Vierling <todd.vierling@oracle.com>
|
|
---
|
|
arch/x86/kernel/cpu/microcode/core.c | 5 +++++
|
|
1 file changed, 5 insertions(+)
|
|
|
|
diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
|
|
index c4d19f4b7afb..a803b839b16e 100644
|
|
--- a/arch/x86/kernel/cpu/microcode/core.c
|
|
+++ b/arch/x86/kernel/cpu/microcode/core.c
|
|
@@ -513,6 +513,9 @@ static int microcode_reload_late(void)
|
|
{
|
|
int ret;
|
|
|
|
+ pr_err("Attempting late microcode loading - it is dangerous and taints the kernel.\n");
|
|
+ pr_err("You should switch to early loading, if possible.\n");
|
|
+
|
|
atomic_set(&late_cpus_in, 0);
|
|
atomic_set(&late_cpus_out, 0);
|
|
|
|
@@ -561,6 +564,8 @@ put:
|
|
if (ret >= 0)
|
|
ret = size;
|
|
|
|
+ add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_STILL_OK);
|
|
+
|
|
return ret;
|
|
}
|
|
|
|
--
|
|
2.39.3
|
|
|