[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <56D76527.5020806@zytor.com>
Date: Wed, 2 Mar 2016 14:11:51 -0800
From: "H. Peter Anvin" <hpa@...or.com>
To: Borislav Petkov <bp@...en8.de>
Cc: Brian Gerst <brgerst@...il.com>, X86 ML <x86@...nel.org>,
LKML <linux-kernel@...r.kernel.org>,
Tom Lendacky <thomas.lendacky@....com>
Subject: Re: [RFC PATCH] x86: Make sure verify_cpu has a good stack
On 03/02/16 14:09, Borislav Petkov wrote:
> On Wed, Mar 02, 2016 at 01:54:50PM -0800, H. Peter Anvin wrote:
>> A relocating bootloader is one that doesn't load the kernel at
>> CONFIG_PHYSICAL_ADDRESS. The EFI stub is one example.
>>
>> __START_KERNEL_map is not relocated. On x86-64 we do relocation by
>> pointing the page tables at a different address.
>>
>> So I really think we need this to be a leaq, so we take a nonstandard
>> load address into consideration.
>
> Hmm, but __START_KERNEL_map is a simple macro:
>
> #define __START_KERNEL_map _AC(0xffffffff80000000, UL)
That should not be a problem.
>
> Ok, I think you want to do something like this for stack_start too:
>
> /*
> * Compute the delta between the address I am compiled to run at and the
> * address I am actually running at.
> */
> leaq _text(%rip), %rbp
> subq $_text - __START_KERNEL_map, %rbp
> ...
>
> in the normal case %rbp is 0, of course.
>
Not sure if we need a reference to _text here.
-hpa
Powered by blists - more mailing lists