All of lore.kernel.org
 help / color / mirror / Atom feed
From: Boris Ostrovsky <boris.ostrovsky@oracle.com>
To: Borislav Petkov <bp@alien8.de>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
	linux-kernel@vger.kernel.org, Ingo Molnar <mingo@kernel.org>
Subject: Re: AMD microcode loading broken on 32 bit
Date: Tue, 28 Jan 2014 18:10:59 -0500	[thread overview]
Message-ID: <52E83903.5040908@oracle.com> (raw)
In-Reply-To: <52E8230F.7080300@oracle.com>

On 01/28/2014 04:37 PM, Boris Ostrovsky wrote:
> On 01/28/2014 04:30 PM, Borislav Petkov wrote:
>> On Tue, Jan 28, 2014 at 04:05:20PM -0500, Boris Ostrovsky wrote:
>>> Yes. This was a bug in our build environment. It is fixed now but I
>>> put this bug back when I was testing your patch.
>> Right, that was the deal. Oh well, we'd need to verify the container
>> too, I guess:

The patch seems to have fixed the problem.

-boris

>
> I'll give it a spin. Apparently the problem is currently in 
> install_equiv_cpu_table()
> when we are trying to index into buf and buf (which is container) 
> doesn't appear
> to be there.
>
> Are you sure that
>
>     container = (u8 *)(__va((u32)relocated_ramdisk) +
>                            ((u32)container - 
> boot_params.hdr.ramdisk_image));
>
> in save_microcode_in_initrd_amd() always results in a valid pointer? 
> It is non-NULL but it
> points to address that looks to be not mapped.
>
> -boris
>
>>
>> ---
>> diff --git a/arch/x86/kernel/cpu/microcode/amd_early.c 
>> b/arch/x86/kernel/cpu/microcode/amd_early.c
>> index 8384c0fa206f..c568b6c9af95 100644
>> --- a/arch/x86/kernel/cpu/microcode/amd_early.c
>> +++ b/arch/x86/kernel/cpu/microcode/amd_early.c
>> @@ -37,10 +37,12 @@ static __initdata char ucode_path[] = 
>> "kernel/x86/microcode/AuthenticAMD.bin";
>>     static struct cpio_data __init find_ucode_in_initrd(void)
>>   {
>> +    struct cpio_data ret;
>>       long offset = 0;
>>       char *path;
>>       void *start;
>>       size_t size;
>> +    u32 *hdr;
>>     #ifdef CONFIG_X86_32
>>       struct boot_params *p;
>> @@ -59,7 +61,18 @@ static struct cpio_data __init 
>> find_ucode_in_initrd(void)
>>       size    = boot_params.hdr.ramdisk_size;
>>   #endif
>>   -    return find_cpio_data(path, start, size, &offset);
>> +    ret = find_cpio_data(path, start, size, &offset);
>> +
>> +    /* Verify we didn't get some garbage from the initrd. */
>> +    hdr = (u32 *)ret.data;
>> +
>> +    if (hdr[0] != UCODE_MAGIC ||
>> +        hdr[1] != UCODE_EQUIV_CPU_TABLE_TYPE ||
>> +        hdr[2] == 0) {
>> +        ret.data = NULL;
>> +        ret.size = 0;
>> +    }
>> +    return ret;
>>   }
>>     static size_t compute_container_size(u8 *data, u32 total_size)
>> @@ -359,7 +372,7 @@ int __init save_microcode_in_initrd_amd(void)
>>           pr_info("microcode: updated early to new 
>> patch_level=0x%08x\n",
>>               ucode_new_rev);
>>   -    if (!container)
>> +    if (!container || !ucode_cpio.data)
>>           return -EINVAL;
>>         eax   = cpuid_eax(0x00000001);
>> -- 
>>
>


  reply	other threads:[~2014-01-28 23:10 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <52DE94A9.9060505@oracle.com>
2014-01-21 16:14 ` AMD microcode loading broken on 32 bit Borislav Petkov
2014-01-21 17:55   ` Boris Ostrovsky
2014-01-21 18:25     ` Borislav Petkov
2014-01-23 18:08       ` Boris Ostrovsky
2014-01-23 18:54         ` Gene Heskett
2014-01-23 19:09           ` Boris Ostrovsky
2014-01-23 19:36             ` Gene Heskett
2014-01-23 19:29         ` Borislav Petkov
2014-01-23 19:41           ` Boris Ostrovsky
2014-01-28 16:24             ` Borislav Petkov
2014-01-28 20:43               ` Boris Ostrovsky
2014-01-28 20:52                 ` Borislav Petkov
2014-01-28 21:05                   ` Boris Ostrovsky
2014-01-28 21:30                     ` Borislav Petkov
2014-01-28 21:37                       ` Boris Ostrovsky
2014-01-28 23:10                         ` Boris Ostrovsky [this message]
2014-01-28 23:22                           ` Borislav Petkov
2014-01-30 15:13                             ` Borislav Petkov
2014-01-30 19:41                               ` Boris Ostrovsky
2014-01-30 19:54                                 ` Borislav Petkov
2014-02-03 17:55                                   ` [PATCH -v2] x86, microcode, AMD: Sanity-check initrd image Borislav Petkov
2014-02-03 19:13                                     ` Boris Ostrovsky
2014-02-03 19:30                                       ` Borislav Petkov
2014-02-03 19:37                                         ` Boris Ostrovsky
2014-02-03 19:52                                           ` Borislav Petkov
2014-02-03 20:28                                             ` Boris Ostrovsky
2014-02-03 20:33                                               ` Borislav Petkov
2014-02-03 20:41                                                 ` [PATCH] x86, microcode, AMD: Unify valid container checks Borislav Petkov
2014-02-06 19:39                                                   ` [tip:x86/urgent] " tip-bot for Borislav Petkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=52E83903.5040908@oracle.com \
    --to=boris.ostrovsky@oracle.com \
    --cc=bp@alien8.de \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.