lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <7766d351074242a8bc929b12857eed46@AcuMS.aculab.com>
Date:   Tue, 10 Nov 2020 15:03:15 +0000
From:   David Laight <David.Laight@...LAB.COM>
To:     'Yang Mingzhe' <cainiao666999@...il.com>,
        "tglx@...utronix.de" <tglx@...utronix.de>,
        "mingo@...hat.com" <mingo@...hat.com>,
        "bp@...en8.de" <bp@...en8.de>, "hpa@...or.com" <hpa@...or.com>,
        "corbet@....net" <corbet@....net>
CC:     "x86@...nel.org" <x86@...nel.org>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        "linux-doc@...r.kernel.org" <linux-doc@...r.kernel.org>
Subject: RE: [PATCH] Documentation: x86: fix thread_info's position

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@...il.com>
> ---
>  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)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ