Message ID | 20191202113702.34158-1-guoheyi@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | arm64/kernel/entry: refine comment of stack overflow check | expand |
On Mon, Dec 02, 2019 at 07:37:02PM +0800, Heyi Guo wrote: > Stack overflow checking can be done by testing > sp & (1 << THREAD_SHIFT) > only for the stacks are aligned to (2 << THREAD_SHIFT) with size of > (1 << THREAD_SIZE), and this is the case when CONFIG_VMAP_STACK is > set. Good point, I was sloppy with this comment. > > Fix the code comment to avoid confusion. > > Signed-off-by: Heyi Guo <guoheyi@huawei.com> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > --- > arch/arm64/kernel/entry.S | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S > index cf3bd2976e57..9e8ba507090f 100644 > --- a/arch/arm64/kernel/entry.S > +++ b/arch/arm64/kernel/entry.S > @@ -76,7 +76,8 @@ alternative_else_nop_endif > #ifdef CONFIG_VMAP_STACK > /* > * Test whether the SP has overflowed, without corrupting a GPR. > - * Task and IRQ stacks are aligned to (1 << THREAD_SHIFT). > + * Task and IRQ stacks are aligned to (2 << THREAD_SHIFT) with size of > + * (1 << THREAD_SHIFT). > */ Can we make that: Task and IRQ stacks are aligned so that SP & (1 << THREAD_SHIFT) should always be zero. ... which I think is a bit clearer. With that wording: Acked-by: Mark Rutland <mark.rutland@arm.com> Mark. > add sp, sp, x0 // sp' = sp + x0 > sub x0, sp, x0 // x0' = sp' - x0 = (sp + x0) - x0 = sp > -- > 2.19.1 >
在 2019/12/2 20:33, Mark Rutland 写道: > On Mon, Dec 02, 2019 at 07:37:02PM +0800, Heyi Guo wrote: >> Stack overflow checking can be done by testing >> sp & (1 << THREAD_SHIFT) >> only for the stacks are aligned to (2 << THREAD_SHIFT) with size of >> (1 << THREAD_SIZE), and this is the case when CONFIG_VMAP_STACK is >> set. > Good point, I was sloppy with this comment. > >> Fix the code comment to avoid confusion. >> >> Signed-off-by: Heyi Guo <guoheyi@huawei.com> >> Cc: Catalin Marinas <catalin.marinas@arm.com> >> Cc: Will Deacon <will@kernel.org> >> --- >> arch/arm64/kernel/entry.S | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S >> index cf3bd2976e57..9e8ba507090f 100644 >> --- a/arch/arm64/kernel/entry.S >> +++ b/arch/arm64/kernel/entry.S >> @@ -76,7 +76,8 @@ alternative_else_nop_endif >> #ifdef CONFIG_VMAP_STACK >> /* >> * Test whether the SP has overflowed, without corrupting a GPR. >> - * Task and IRQ stacks are aligned to (1 << THREAD_SHIFT). >> + * Task and IRQ stacks are aligned to (2 << THREAD_SHIFT) with size of >> + * (1 << THREAD_SHIFT). >> */ > Can we make that: > > Task and IRQ stacks are aligned so that SP & (1 << THREAD_SHIFT) > should always be zero. > > ... which I think is a bit clearer. Sure :) Thanks, Heyi > > With that wording: > > Acked-by: Mark Rutland <mark.rutland@arm.com> > > Mark. > >> add sp, sp, x0 // sp' = sp + x0 >> sub x0, sp, x0 // x0' = sp' - x0 = (sp + x0) - x0 = sp >> -- >> 2.19.1 >> > .
On Mon, Dec 02, 2019 at 07:37:02PM +0800, Heyi Guo wrote: > Stack overflow checking can be done by testing > sp & (1 << THREAD_SHIFT) > only for the stacks are aligned to (2 << THREAD_SHIFT) with size of > (1 << THREAD_SIZE), and this is the case when CONFIG_VMAP_STACK is > set. > > Fix the code comment to avoid confusion. > > Signed-off-by: Heyi Guo <guoheyi@huawei.com> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> Queued with Mark's suggested update.
diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S index cf3bd2976e57..9e8ba507090f 100644 --- a/arch/arm64/kernel/entry.S +++ b/arch/arm64/kernel/entry.S @@ -76,7 +76,8 @@ alternative_else_nop_endif #ifdef CONFIG_VMAP_STACK /* * Test whether the SP has overflowed, without corrupting a GPR. - * Task and IRQ stacks are aligned to (1 << THREAD_SHIFT). + * Task and IRQ stacks are aligned to (2 << THREAD_SHIFT) with size of + * (1 << THREAD_SHIFT). */ add sp, sp, x0 // sp' = sp + x0 sub x0, sp, x0 // x0' = sp' - x0 = (sp + x0) - x0 = sp
Stack overflow checking can be done by testing sp & (1 << THREAD_SHIFT) only for the stacks are aligned to (2 << THREAD_SHIFT) with size of (1 << THREAD_SIZE), and this is the case when CONFIG_VMAP_STACK is set. Fix the code comment to avoid confusion. Signed-off-by: Heyi Guo <guoheyi@huawei.com> Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> --- arch/arm64/kernel/entry.S | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)