]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
x86/microcode/AMD: Return bool from find_blobs_in_containers()
authorNikolay Borisov <nik.borisov@suse.com>
Fri, 18 Oct 2024 15:51:49 +0000 (18:51 +0300)
committerBorislav Petkov (AMD) <bp@alien8.de>
Tue, 31 Dec 2024 13:03:30 +0000 (14:03 +0100)
Instead of open-coding the check for size/data move it inside the
function and make it return a boolean indicating whether data was found
or not.

No functional changes.

  [ bp: Write @ret in find_blobs_in_containers() only on success. ]

Signed-off-by: Nikolay Borisov <nik.borisov@suse.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/20241018155151.702350-2-nik.borisov@suse.com
arch/x86/kernel/cpu/microcode/amd.c

index fb5d0c67fbab1797021db885122f8486e0410656..d395665d9691ff6e1fc2e577f6a027d9aeef8f7b 100644 (file)
@@ -569,14 +569,19 @@ static bool get_builtin_microcode(struct cpio_data *cp)
        return false;
 }
 
-static void __init find_blobs_in_containers(struct cpio_data *ret)
+static bool __init find_blobs_in_containers(struct cpio_data *ret)
 {
        struct cpio_data cp;
+       bool found;
 
        if (!get_builtin_microcode(&cp))
                cp = find_microcode_in_initrd(ucode_path);
 
-       *ret = cp;
+       found = cp.data && cp.size;
+       if (found)
+               *ret = cp;
+
+       return found;
 }
 
 void __init load_ucode_amd_bsp(struct early_load_data *ed, unsigned int cpuid_1_eax)
@@ -591,8 +596,7 @@ void __init load_ucode_amd_bsp(struct early_load_data *ed, unsigned int cpuid_1_
        /* Needed in load_microcode_amd() */
        ucode_cpu_info[0].cpu_sig.sig = cpuid_1_eax;
 
-       find_blobs_in_containers(&cp);
-       if (!(cp.data && cp.size))
+       if (!find_blobs_in_containers(&cp))
                return;
 
        if (early_apply_microcode(ed->old_rev, cp.data, cp.size))
@@ -612,8 +616,7 @@ static int __init save_microcode_in_initrd(void)
        if (dis_ucode_ldr || c->x86_vendor != X86_VENDOR_AMD || c->x86 < 0x10)
                return 0;
 
-       find_blobs_in_containers(&cp);
-       if (!(cp.data && cp.size))
+       if (!find_blobs_in_containers(&cp))
                return -EINVAL;
 
        scan_containers(cp.data, cp.size, &desc);