From: Borislav Petkov <b...@suse.de>

No need to use the previously stashed info in the container - simply go
ahead and parse the initrd once more. It simplifies and streamlines the
code a whole lot.

Signed-off-by: Borislav Petkov <b...@suse.de>
Reviewed-by: Thomas Gleixner <t...@linutronix.de>
---
 arch/x86/kernel/cpu/microcode/amd.c | 43 +++++++++++--------------------------
 1 file changed, 13 insertions(+), 30 deletions(-)

diff --git a/arch/x86/kernel/cpu/microcode/amd.c 
b/arch/x86/kernel/cpu/microcode/amd.c
index fe9e865480af..2a194e384207 100644
--- a/arch/x86/kernel/cpu/microcode/amd.c
+++ b/arch/x86/kernel/cpu/microcode/amd.c
@@ -372,43 +372,26 @@ load_microcode_amd(int cpu, u8 family, const u8 *data, 
size_t size);
 
 int __init save_microcode_in_initrd_amd(unsigned int cpuid_1_eax)
 {
+       struct cont_desc desc = { 0 };
        enum ucode_state ret;
-       int retval = 0;
-
-       if (!cont.data) {
-               if (IS_ENABLED(CONFIG_X86_32) && (cont.size != -1)) {
-                       struct cpio_data cp;
-
-                       cp = find_microcode_in_initrd(ucode_path, false);
-                       if (!(cp.data && cp.size)) {
-                               cont.size = -1;
-                               return -EINVAL;
-                       }
+       struct cpio_data cp;
 
-                       cont.cpuid_1_eax = cpuid_1_eax;
+       cp = find_microcode_in_initrd(ucode_path, false);
+       if (!(cp.data && cp.size))
+               return -EINVAL;
 
-                       scan_containers(cp.data, cp.size, &cont);
-                       if (!cont.eq_id) {
-                               cont.size = -1;
-                               return -EINVAL;
-                       }
+       desc.cpuid_1_eax = cpuid_1_eax;
 
-               } else
-                       return -EINVAL;
-       }
+       scan_containers(cp.data, cp.size, &desc);
+       if (!desc.eq_id)
+               return -EINVAL;
 
-       ret = load_microcode_amd(smp_processor_id(), x86_family(cpuid_1_eax), 
cont.data, cont.size);
+       ret = load_microcode_amd(smp_processor_id(), x86_family(cpuid_1_eax),
+                                desc.data, desc.size);
        if (ret != UCODE_OK)
-               retval = -EINVAL;
-
-       /*
-        * This will be freed any msec now, stash patches for the current
-        * family and switch to patch cache for cpu hotplug, etc later.
-        */
-       cont.data = NULL;
-       cont.size = 0;
+               return -EINVAL;
 
-       return retval;
+       return 0;
 }
 
 void reload_ucode_amd(void)
-- 
2.11.0

Reply via email to