diff options
Diffstat (limited to 'arch/x86/kernel/cpu/microcode/amd.c')
| -rw-r--r-- | arch/x86/kernel/cpu/microcode/amd.c | 10 | 
1 files changed, 2 insertions, 8 deletions
diff --git a/arch/x86/kernel/cpu/microcode/amd.c b/arch/x86/kernel/cpu/microcode/amd.c index 8b2fcdfa6d31..e7410e98fc1f 100644 --- a/arch/x86/kernel/cpu/microcode/amd.c +++ b/arch/x86/kernel/cpu/microcode/amd.c @@ -788,6 +788,7 @@ static int verify_and_add_patch(u8 family, u8 *fw, unsigned int leftover,  		kfree(patch);  		return -EINVAL;  	} +	patch->size = *patch_size;  	mc_hdr      = (struct microcode_header_amd *)(fw + SECTION_HDR_SIZE);  	proc_id     = mc_hdr->processor_rev_id; @@ -869,7 +870,7 @@ load_microcode_amd(bool save, u8 family, const u8 *data, size_t size)  		return ret;  	memset(amd_ucode_patch, 0, PATCH_MAX_SIZE); -	memcpy(amd_ucode_patch, p->data, min_t(u32, ksize(p->data), PATCH_MAX_SIZE)); +	memcpy(amd_ucode_patch, p->data, min_t(u32, p->size, PATCH_MAX_SIZE));  	return ret;  } @@ -924,12 +925,6 @@ static enum ucode_state request_microcode_amd(int cpu, struct device *device,  	return ret;  } -static enum ucode_state -request_microcode_user(int cpu, const void __user *buf, size_t size) -{ -	return UCODE_ERROR; -} -  static void microcode_fini_cpu_amd(int cpu)  {  	struct ucode_cpu_info *uci = ucode_cpu_info + cpu; @@ -938,7 +933,6 @@ static void microcode_fini_cpu_amd(int cpu)  }  static struct microcode_ops microcode_amd_ops = { -	.request_microcode_user           = request_microcode_user,  	.request_microcode_fw             = request_microcode_amd,  	.collect_cpu_info                 = collect_cpu_info_amd,  	.apply_microcode                  = apply_microcode_amd,  |