summaryrefslogtreecommitdiffstats
path: root/arch
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 /arch
parentx86/microcode: Default-disable late loading (diff)
downloadlinux-d23d33ea0fcdc4bbb484990bf53867f99c63ccab.tar.xz
linux-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
Diffstat (limited to 'arch')
-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;
}