diff --git a/arch/x86/kernel/cpu/microcode/intel.c b/arch/x86/kernel/cpu/microcode/intel.c
index d1b2f583f5436..c029c2bb2a295 100644
--- a/arch/x86/kernel/cpu/microcode/intel.c
+++ b/arch/x86/kernel/cpu/microcode/intel.c
@@ -843,12 +843,12 @@ static int apply_microcode_intel(int cpu)
 	int cpu_num = raw_smp_processor_id();
 	struct cpuinfo_x86 *c = &cpu_data(cpu_num);
 
-	uci = ucode_cpu_info + cpu;
-	mc = uci->mc;
-
 	/* We should bind the task to the CPU */
-	BUG_ON(cpu_num != cpu);
+	if (WARN_ON(cpu_num != cpu))
+		return -1;
 
+	uci = ucode_cpu_info + cpu;
+	mc = uci->mc;
 	if (!mc)
 		return 0;