summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBorislav Petkov <bp@suse.de>2022-05-25 18:12:31 +0200
committerThomas Gleixner <tglx@linutronix.de>2022-05-31 09:31:19 +0200
commitd23d33ea0fcdc4bbb484990bf53867f99c63ccab (patch)
tree4f3eac2da6ba21bd0528e3245d10913495430546
parenta77a94f86273ce42a39cb479217dd8d68acfe0ff (diff)
downloadlinux-stable-d23d33ea0fcdc4bbb484990bf53867f99c63ccab.tar.gz
linux-stable-d23d33ea0fcdc4bbb484990bf53867f99c63ccab.tar.bz2
linux-stable-d23d33ea0fcdc4bbb484990bf53867f99c63ccab.zip
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
-rw-r--r--arch/x86/kernel/cpu/microcode/core.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
index c717db6b6856..801b44ac3851 100644
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -493,6 +493,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);
@@ -541,6 +544,8 @@ put:
if (ret == 0)
ret = size;
+ add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_STILL_OK);
+
return ret;
}