Re: [PATCH v6 31/76] x86/head/64: Setup MSR_GS_BASE before calling into C code
From: Borislav Petkov <bp@alien8.de>
Date: 2020-08-28 18:13:54
Also in:
kvm, lkml
From: Borislav Petkov <bp@alien8.de>
Date: 2020-08-28 18:13:54
Also in:
kvm, lkml
On Mon, Aug 24, 2020 at 10:54:26AM +0200, Joerg Roedel wrote:
diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S index 2b2e91627221..800053219054 100644 --- a/arch/x86/kernel/head_64.S +++ b/arch/x86/kernel/head_64.S@@ -78,6 +78,14 @@ SYM_CODE_START_NOALIGN(startup_64) call startup_64_setup_env popq %rsi + /* + * Setup %gs here already to make stack-protector work - it needs to be + * setup again after the switch to kernel addresses. The address read + * from initial_gs is a kernel address, so it needs to be adjusted first + * for the identity mapping. + */ + movl $MSR_GS_BASE,%ecx
I'm confused: is this missing those three lines:
movl initial_gs(%rip),%eax
movl initial_gs+4(%rip),%edx
wrmsr
as it is done in secondary_startup_64 ?
Or why would you otherwise put 0xc0000101 in %ecx and not do anything
with it...
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization