lkml.org 
[lkml]   [2020]   [Aug]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH v6 31/76] x86/head/64: Setup MSR_GS_BASE before calling into C code
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

\
 
 \ /
  Last update: 2020-08-28 20:15    [W:0.646 / U:0.044 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site