Messages in this thread | | | Subject | Re: [RFC PATCH] x86: Make sure verify_cpu has a good stack | From | "H. Peter Anvin" <> | Date | Wed, 2 Mar 2016 13:35:09 -0800 |
| |
On 03/02/16 11:50, Borislav Petkov wrote: > On Wed, Mar 02, 2016 at 10:39:05AM -0800, H. Peter Anvin wrote: >> Well, we definitely should use %rip-relative addressing if we can. > > Right you are. > >> However, even so I believe this breaks if the kernel is loaded anywhere >> but its default load address. I think we need to do something like: >> >> movq stack_start(%rip), %rax >> leaq __START_KERNEL_map(%rip), %rdx >> subq %rdx, %rax >> movq %rax, %rsp >> >> The use of temporary registers avoids clobbering a valid stack pointer >> for even a single instruction if we are given one. > > Yeah, we should be prudent and make this as sturdy as possible. I did this: > > CONFIG_PHYSICAL_START=0x100beef > > and it aligned startup_64 up to ffffffff82000000. It seems to boot fine > in kvm. But better safe than sorry. >
You're not actually testing anything as the real issue is what happens with a relocating bootloader. That's okay; I think we can be pretty sure the above works by inspection.
-hpa
| |