diff options
Diffstat (limited to 'arch/x86/kernel/cpu/microcode/core.c')
| -rw-r--r-- | arch/x86/kernel/cpu/microcode/core.c | 19 | 
1 files changed, 8 insertions, 11 deletions
diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c index aa1b9a422f2b..63370651e376 100644 --- a/arch/x86/kernel/cpu/microcode/core.c +++ b/arch/x86/kernel/cpu/microcode/core.c @@ -373,26 +373,23 @@ static int collect_cpu_info(int cpu)  	return ret;  } -struct apply_microcode_ctx { -	enum ucode_state err; -}; -  static void apply_microcode_local(void *arg)  { -	struct apply_microcode_ctx *ctx = arg; +	enum ucode_state *err = arg; -	ctx->err = microcode_ops->apply_microcode(smp_processor_id()); +	*err = microcode_ops->apply_microcode(smp_processor_id());  }  static int apply_microcode_on_target(int cpu)  { -	struct apply_microcode_ctx ctx = { .err = 0 }; +	enum ucode_state err;  	int ret; -	ret = smp_call_function_single(cpu, apply_microcode_local, &ctx, 1); -	if (!ret) -		ret = ctx.err; - +	ret = smp_call_function_single(cpu, apply_microcode_local, &err, 1); +	if (!ret) { +		if (err == UCODE_ERROR) +			ret = 1; +	}  	return ret;  }  | 
