userspace stack start and end
I am trying to find the start and end address of the userspace stack. I see in the task_struct there is start_stack. But I could not find end_start anywhere in the kernel code ? Can someone please tell me how to find the end of the stack ? Thanks, Xin
[Sun, 27 Jul 2014 11:52:27 -0500]: "Xin Tong" (xin-tong):
,----[ xin-tong ] | I am trying to find the start and end address of the userspace stack. | I see in the task_struct there is start_stack. But I could not find | end_start anywhere in the kernel code ? | | Can someone please tell me how to find the end of the stack ? `---- but that should be computable right e.g. user:stack-end = user:stack-start + user:stack-segment-size * number-of-pages kind regards anupam
where is user:stack-segment-size defined ? Thanks, Xin On Sun, Jul 27, 2014 at 10:32 PM, anupam kapoor <anupam.kapoor@gmail.com> wrote:
[Sun, 27 Jul 2014 11:52:27 -0500]: "Xin Tong" (xin-tong):
,----[ xin-tong ] | I am trying to find the start and end address of the userspace stack. | I see in the task_struct there is start_stack. But I could not find | end_start anywhere in the kernel code ? | | Can someone please tell me how to find the end of the stack ? `---- but that should be computable right e.g. user:stack-end = user:stack-start + user:stack-segment-size * number-of-pages
kind regards anupam
[Sun, 27 Jul 2014 22:35:22 -0500]: "Xin Tong" (xin-tong):
,----[ xin-tong ] | where is user:stack-segment-size defined ? `---- that is computable once again :) (assuming x86, and 1+3 split) user:stack-segment-size = ((unsigned long)(0xc0000000 - user:start-stack)) >> PAGE_SHIFT kind regards anupam ,----[ anupam ] | ,----[ xin-tong ] | | I am trying to find the start and end address of the userspace | stack. | | I see in the task_struct there is start_stack. But I could not | find | | end_start anywhere in the kernel code ? | | | | Can someone please tell me how to find the end of the stack ? | | `---- | but that should be computable right e.g. | user:stack-end = user:stack-start + user:stack-segment-size * | number-of-pages `----
so the stack always starts at 0xc0000000 on x86 32bit and stack-start is pointing to the smaller address of stack ie growing downwards xin On Sunday, July 27, 2014, anupam kapoor <anupam.kapoor@gmail.com> wrote:
[Sun, 27 Jul 2014 22:35:22 -0500]: "Xin Tong" (xin-tong):
,----[ xin-tong ] | where is user:stack-segment-size defined ? `---- that is computable once again :) (assuming x86, and 1+3 split) user:stack-segment-size = ((unsigned long)(0xc0000000 - user:start-stack)) >> PAGE_SHIFT
kind regards anupam
,----[ anupam ] | ,----[ xin-tong ] | | I am trying to find the start and end address of the userspace | stack. | | I see in the task_struct there is start_stack. But I could not | find | | end_start anywhere in the kernel code ? | | | | Can someone please tell me how to find the end of the stack ? | | `---- | but that should be computable right e.g. | user:stack-end = user:stack-start + user:stack-segment-size * | number-of-pages `----
FYI, there are many different types of kernel stack: http://www.x86-64.org/pipermail/discuss/2005-April/005944.html On Mon, Jul 28, 2014 at 12:52 AM, Xin Tong <trent.tong@gmail.com> wrote:
I am trying to find the start and end address of the userspace stack. I see in the task_struct there is start_stack. But I could not find end_start anywhere in the kernel code ?
Can someone please tell me how to find the end of the stack ?
Thanks, Xin
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-- Regards, Peter Teoh
and look into the function "print_context_stack()" which will teach u how to identify the start/end of stack, whether the address is valid, how to traverse from one frame to another (using RBP / EBP of course, so CONFIG for framepointer is definitely needed). On Sat, Aug 2, 2014 at 12:22 AM, Peter Teoh <htmldeveloper@gmail.com> wrote:
FYI, there are many different types of kernel stack:
http://www.x86-64.org/pipermail/discuss/2005-April/005944.html
On Mon, Jul 28, 2014 at 12:52 AM, Xin Tong <trent.tong@gmail.com> wrote:
I am trying to find the start and end address of the userspace stack. I see in the task_struct there is start_stack. But I could not find end_start anywhere in the kernel code ?
Can someone please tell me how to find the end of the stack ?
Thanks, Xin
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
-- Regards, Peter Teoh
-- Regards, Peter Teoh
participants (3)
-
anupam kapoor -
Peter Teoh -
Xin Tong