All of lore.kernel.org
 help / color / mirror / Atom feed
From: "H. Peter Anvin" <hpa@zytor.com>
To: Xin Li <xin@zytor.com>,
	linux-kernel@vger.kernel.org, xen-devel@lists.xenproject.org
Cc: tglx@linutronix.de, mingo@redhat.com, bp@alien8.de,
	dave.hansen@linux.intel.com, x86@kernel.org, jgross@suse.com,
	boris.ostrovsky@oracle.com, arnd@arndb.de,
	andrew.cooper3@citrix.com, brgerst@gmail.com
Subject: Re: [PATCH v2 1/1] x86/fred: Fix init_task thread stack pointer initialization
Date: Wed, 06 Mar 2024 12:39:46 -0800	[thread overview]
Message-ID: <82259B6F-2F57-4099-869D-84891D996664@zytor.com> (raw)
In-Reply-To: <f982f5ad-36be-4173-a15b-b898252c103c@zytor.com>

On March 6, 2024 10:28:25 AM PST, Xin Li <xin@zytor.com> wrote:
>On 3/4/2024 12:33 AM, Xin Li (Intel) wrote:
>> As TOP_OF_KERNEL_STACK_PADDING is defined as 0 on x86_64, no one noticed
>> it's missing in the calculation of the .sp field in INIT_THREAD until it
>> is defined to 16 with CONFIG_X86_FRED=y.
>> 
>> Subtract TOP_OF_KERNEL_STACK_PADDING from the .sp field of INIT_THREAD.
>> 
>> Fixes: 65c9cc9e2c14 ("x86/fred: Reserve space for the FRED stack frame")
>> Fixes: 3adee777ad0d ("x86/smpboot: Remove initial_stack on 64-bit")
>> Reported-by: kernel test robot <oliver.sang@intel.com>
>> Closes: https://lore.kernel.org/oe-lkp/202402262159.183c2a37-lkp@intel.com
>> Signed-off-by: Xin Li (Intel) <xin@zytor.com>
>> ---
>
>Should this fix, if it looks good, be included for the coming merge
>window?
>
>Thanks!
>    Xin
>
>> 
>> Change Since v1:
>> * Apply offset TOP_OF_KERNEL_STACK_PADDING to all uses of __end_init_task
>>    (Brian Gerst).
>> ---
>>   arch/x86/include/asm/processor.h | 6 ++++--
>>   arch/x86/kernel/head_64.S        | 3 ++-
>>   arch/x86/xen/xen-head.S          | 2 +-
>>   3 files changed, 7 insertions(+), 4 deletions(-)
>> 
>> diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
>> index 26620d7642a9..17fe81998ce4 100644
>> --- a/arch/x86/include/asm/processor.h
>> +++ b/arch/x86/include/asm/processor.h
>> @@ -664,8 +664,10 @@ static __always_inline void prefetchw(const void *x)
>>   #else
>>   extern unsigned long __end_init_task[];
>>   -#define INIT_THREAD {							    \
>> -	.sp	= (unsigned long)&__end_init_task - sizeof(struct pt_regs), \
>> +#define INIT_THREAD {							\
>> +	.sp	= (unsigned long)&__end_init_task -			\
>> +		  TOP_OF_KERNEL_STACK_PADDING -				\
>> +		  sizeof(struct pt_regs),				\
>>   }
>>     extern unsigned long KSTK_ESP(struct task_struct *task);
>> diff --git a/arch/x86/kernel/head_64.S b/arch/x86/kernel/head_64.S
>> index d4918d03efb4..c38e43589046 100644
>> --- a/arch/x86/kernel/head_64.S
>> +++ b/arch/x86/kernel/head_64.S
>> @@ -26,6 +26,7 @@
>>   #include <asm/apicdef.h>
>>   #include <asm/fixmap.h>
>>   #include <asm/smp.h>
>> +#include <asm/thread_info.h>
>>     /*
>>    * We are not able to switch in one step to the final KERNEL ADDRESS SPACE
>> @@ -66,7 +67,7 @@ SYM_CODE_START_NOALIGN(startup_64)
>>   	mov	%rsi, %r15
>>     	/* Set up the stack for verify_cpu() */
>> -	leaq	(__end_init_task - PTREGS_SIZE)(%rip), %rsp
>> +	leaq	(__end_init_task - TOP_OF_KERNEL_STACK_PADDING - PTREGS_SIZE)(%rip), %rsp
>>     	leaq	_text(%rip), %rdi
>>   diff --git a/arch/x86/xen/xen-head.S b/arch/x86/xen/xen-head.S
>> index a0ea285878db..04101b984f24 100644
>> --- a/arch/x86/xen/xen-head.S
>> +++ b/arch/x86/xen/xen-head.S
>> @@ -49,7 +49,7 @@ SYM_CODE_START(startup_xen)
>>   	ANNOTATE_NOENDBR
>>   	cld
>>   -	leaq	(__end_init_task - PTREGS_SIZE)(%rip), %rsp
>> +	leaq	(__end_init_task - TOP_OF_KERNEL_STACK_PADDING - PTREGS_SIZE)(%rip), %rsp
>>     	/* Set up %gs.
>>   	 *
>> 
>> base-commit: e13841907b8fda0ae0ce1ec03684665f578416a8
>

Absolutely.

  reply	other threads:[~2024-03-06 20:40 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-04  8:33 [PATCH v2 1/1] x86/fred: Fix init_task thread stack pointer initialization Xin Li (Intel)
2024-03-06 18:28 ` Xin Li
2024-03-06 20:39   ` H. Peter Anvin [this message]
2024-03-07 11:04 ` [tip: x86/fred] " tip-bot2 for Xin Li (Intel)

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=82259B6F-2F57-4099-869D-84891D996664@zytor.com \
    --to=hpa@zytor.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=arnd@arndb.de \
    --cc=boris.ostrovsky@oracle.com \
    --cc=bp@alien8.de \
    --cc=brgerst@gmail.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=jgross@suse.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=xen-devel@lists.xenproject.org \
    --cc=xin@zytor.com \
    /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.