x86/microcode/intel: Check if microcode was found before applying
authorBorislav Petkov <bp@suse.de>
Thu, 5 Feb 2015 18:35:19 +0000 (19:35 +0100)
committerBorislav Petkov <bp@suse.de>
Mon, 2 Mar 2015 19:31:03 +0000 (20:31 +0100)
We should check the return value of the routines fishing out the proper
microcode and not try to apply if we haven't found a suitable blob.

Signed-off-by: Borislav Petkov <bp@suse.de>
arch/x86/kernel/cpu/microcode/intel_early.c

index 3a6c6136c9da0e6ef176fef2bffd3a7b048c998c..d515ff3feb8bdfddefe6eda3e4e3122d737a34c3 100644 (file)
@@ -727,9 +727,10 @@ _load_ucode_intel_bsp(struct mc_saved_data *mc_saved_data,
 
        ret = load_microcode(mc_saved_data, mc_saved_in_initrd,
                             initrd_start_early, uci);
+       if (ret != UCODE_OK)
+               return;
 
-       if (ret == UCODE_OK)
-               apply_microcode_early(uci, true);
+       apply_microcode_early(uci, true);
 }
 
 void __init
@@ -769,6 +770,7 @@ void load_ucode_intel_ap(void)
        struct ucode_cpu_info uci;
        unsigned long *mc_saved_in_initrd_p;
        unsigned long initrd_start_addr;
+       enum ucode_state ret;
 #ifdef CONFIG_X86_32
        unsigned long *initrd_start_p;
 
@@ -791,8 +793,12 @@ void load_ucode_intel_ap(void)
                return;
 
        collect_cpu_info_early(&uci);
-       load_microcode(mc_saved_data_p, mc_saved_in_initrd_p,
-                      initrd_start_addr, &uci);
+       ret = load_microcode(mc_saved_data_p, mc_saved_in_initrd_p,
+                            initrd_start_addr, &uci);
+
+       if (ret != UCODE_OK)
+               return;
+
        apply_microcode_early(&uci, true);
 }