2013-07-23 20:59:34

by Torsten Kaiser

[permalink] [raw]
Subject: [PATCH 2/5] x86, microcode: Don't lose error returns in save_microcode_in_initrd()

Don't lose the error return.
This was lost when early amd microcode loading was added in
757885e94a22bcc82beb9b1445c95218cb20ceab

Signed-off-by: Torsten Kaiser <[email protected]>

--- a/arch/x86/kernel/microcode_core_early.c 2013-07-23 19:44:05.509516795 +0200
+++ b/arch/x86/kernel/microcode_core_early.c 2013-07-23 19:58:34.459509474 +0200
@@ -127,11 +127,11 @@ int __init save_microcode_in_initrd(void
switch (c->x86_vendor) {
case X86_VENDOR_INTEL:
if (c->x86 >= 6)
- save_microcode_in_initrd_intel();
+ return save_microcode_in_initrd_intel();
break;
case X86_VENDOR_AMD:
if (c->x86 >= 0x10)
- save_microcode_in_initrd_amd();
+ return save_microcode_in_initrd_amd();
break;
default:
break;


2013-07-24 12:57:12

by Borislav Petkov

[permalink] [raw]
Subject: Re: [PATCH 2/5] x86, microcode: Don't lose error returns in save_microcode_in_initrd()

On Tue, Jul 23, 2013 at 10:59:23PM +0200, Torsten Kaiser wrote:
> Don't lose the error return.
> This was lost when early amd microcode loading was added in
> 757885e94a22bcc82beb9b1445c95218cb20ceab
>
> Signed-off-by: Torsten Kaiser <[email protected]>
>
> --- a/arch/x86/kernel/microcode_core_early.c 2013-07-23 19:44:05.509516795 +0200
> +++ b/arch/x86/kernel/microcode_core_early.c 2013-07-23 19:58:34.459509474 +0200
> @@ -127,11 +127,11 @@ int __init save_microcode_in_initrd(void
> switch (c->x86_vendor) {
> case X86_VENDOR_INTEL:
> if (c->x86 >= 6)
> - save_microcode_in_initrd_intel();
> + return save_microcode_in_initrd_intel();
> break;
> case X86_VENDOR_AMD:
> if (c->x86 >= 0x10)
> - save_microcode_in_initrd_amd();
> + return save_microcode_in_initrd_amd();

This one is incomplete: if we really want to hand up the error code, we
need to add a printk to the caller free_initrd_mem() saying that saving
of microcode from the initrd failed.

However, save_microcode_in_initrd_intel() already warns about it in the
error case.

So, actually, I think the warning should be issued by
save_microcode_in_initrd() and this function itself should be made to
return void. And save_microcode_in_initrd_intel() can simply return the
error code without doing the printk.

--
Regards/Gruss,
Boris.

Sent from a fat crate under my desk. Formatting is fine.
--