From: David Laight > Sent: 10 November 2020 23:03 Thank you for your review! > Nope, most stacks 'grow down'. > So the first item pushed is at address 8k (for 8k stacks). Yep, most stacks 'grow down'. But the zero offset of a stack is also at address 8k(for 8k stack). > The bit about the kernel 4.9 changes doesn't read well at all. > I think the commas are just wrong. I’m sorry for that, because my English is not very well. > You could say something like: > Prior to kernel 4.9 the thread_info structure was at the bottom of the kernel stack. kernel 4.9 moved it into the task_struct. Gotcha! On Tue, Nov 10, 2020 at 11:03 PM David Laight <David.Laight@xxxxxxxxxx> wrote: > > From: Yang Mingzhe > > Sent: 10 November 2020 14:21 > > > > The bottom of the stack is where the first item was added to the stack, > > usually at the zero offset. Actually, the thread_info structure at the > > end of the stack. > > Nope, most stacks 'grow down'. > So the first item pushed is at address 8k (for 8k stacks). > > > Please see attached picture: > > https://github.com/Mutated1994/kernel-beginner/blob/master/kernel-stack.md > > > > See commits c65eacb ("sched/core: Allow putting thread_info into > > task_struct"), 15f4eae ("x86: Move thread_info into task_struct") > > and 883d50f ("scripts/gdb: fix get_thread_info"). > > > > Signed-off-by: Yang Mingzhe <cainiao666999@xxxxxxxxx> > > --- > > Documentation/x86/kernel-stacks.rst | 4 +++- > > 1 file changed, 3 insertions(+), 1 deletion(-) > > > > diff --git a/Documentation/x86/kernel-stacks.rst b/Documentation/x86/kernel-stacks.rst > > index 6b0bcf0..b88b9e12 100644 > > --- a/Documentation/x86/kernel-stacks.rst > > +++ b/Documentation/x86/kernel-stacks.rst > > @@ -15,7 +15,9 @@ Like all other architectures, x86_64 has a kernel stack for every > > active thread. These thread stacks are THREAD_SIZE (2*PAGE_SIZE) big. > > These stacks contain useful data as long as a thread is alive or a > > zombie. While the thread is in user space the kernel stack is empty > > -except for the thread_info structure at the bottom. > > +except for the thread_info structure at the end (since kernel 4.9, the > > +thread_info has been moved into task_struct, no longer locates at the > > +end of kernel stack). > > So 'bottom' - meaning address 0 is probably right. > Not sure what happens on the few architectures where pushing values > onto the stack does increase the stack pointer. > > The bit about the kernel 4.9 changes doesn't read well at all. > I think the commas are just wrong. > You could say something like: > > Prior to kernel 4.9 the thread_info structure was at the bottom > of the kernel stack. kernel 4.9 moved it into the task_struct. > > David > > - > Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK > Registration No: 1397386 (Wales) >