]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
x86/microcode/AMD: Extend the SHA check to Zen5, block loading of any unreleased...
authorBorislav Petkov (AMD) <bp@alien8.de>
Thu, 10 Apr 2025 11:42:22 +0000 (13:42 +0200)
committerIngo Molnar <mingo@kernel.org>
Sat, 12 Apr 2025 19:09:42 +0000 (21:09 +0200)
All Zen5 machines out there should get BIOS updates which update to the
correct microcode patches addressing the microcode signature issue.
However, silly people carve out random microcode blobs from BIOS
packages and think are doing other people a service this way...

Block loading of any unreleased standalone Zen5 microcode patches.

Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: <stable@kernel.org>
Cc: Andrew Cooper <andrew.cooper3@citrix.com>
Cc: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Cc: Nikolay Borisov <nik.borisov@suse.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Link: https://lore.kernel.org/r/20250410114222.32523-1-bp@kernel.org
arch/x86/kernel/cpu/microcode/amd.c

index b61028cf5c8a3b3b4f7fc8099747d26f392df0c6..4a10d35e70aa54a9594e49e03be2aaf96e4290ae 100644 (file)
@@ -199,6 +199,12 @@ static bool need_sha_check(u32 cur_rev)
        case 0xa70c0: return cur_rev <= 0xa70C009; break;
        case 0xaa001: return cur_rev <= 0xaa00116; break;
        case 0xaa002: return cur_rev <= 0xaa00218; break;
+       case 0xb0021: return cur_rev <= 0xb002146; break;
+       case 0xb1010: return cur_rev <= 0xb101046; break;
+       case 0xb2040: return cur_rev <= 0xb204031; break;
+       case 0xb4040: return cur_rev <= 0xb404031; break;
+       case 0xb6000: return cur_rev <= 0xb600031; break;
+       case 0xb7000: return cur_rev <= 0xb700031; break;
        default: break;
        }
 
@@ -214,8 +220,7 @@ static bool verify_sha256_digest(u32 patch_id, u32 cur_rev, const u8 *data, unsi
        struct sha256_state s;
        int i;
 
-       if (x86_family(bsp_cpuid_1_eax) < 0x17 ||
-           x86_family(bsp_cpuid_1_eax) > 0x19)
+       if (x86_family(bsp_cpuid_1_eax) < 0x17)
                return true;
 
        if (!need_sha_check(cur_rev))