Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1430350 > unrolled thread

[PATCH v4 13/16] x86/dumpstack: Try harder to get a call trace on stack overflow

Started byAndy Lutomirski <luto@kernel.org>
First post2016-06-24 06:30 +0200
Last post2016-06-26 19:10 +0200
Articles 3 — 3 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH v4 13/16] x86/dumpstack: Try harder to get a call trace on stack overflow Andy Lutomirski <luto@kernel.org> - 2016-06-24 06:30 +0200
    Re: [PATCH v4 13/16] x86/dumpstack: Try harder to get a call trace  on stack overflow Josh Poimboeuf <jpoimboe@redhat.com> - 2016-06-24 17:40 +0200
      Re: [PATCH v4 13/16] x86/dumpstack: Try harder to get a call trace on  stack overflow Andy Lutomirski <luto@amacapital.net> - 2016-06-26 19:10 +0200

#1430350 — [PATCH v4 13/16] x86/dumpstack: Try harder to get a call trace on stack overflow

FromAndy Lutomirski <luto@kernel.org>
Date2016-06-24 06:30 +0200
Subject[PATCH v4 13/16] x86/dumpstack: Try harder to get a call trace on stack overflow
Message-ID<rNqUH-3pa-39@gated-at.bofh.it>
If we overflow the stack, print_context_stack will abort.  Detect
this case and rewind back into the valid part of the stack so that
we can trace it.

Signed-off-by: Andy Lutomirski <luto@kernel.org>
---
 arch/x86/kernel/dumpstack.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c
index 4592bc4ed3e1..4538f7ca9072 100644
--- a/arch/x86/kernel/dumpstack.c
+++ b/arch/x86/kernel/dumpstack.c
@@ -87,7 +87,7 @@ static inline int valid_stack_ptr(struct task_struct *task,
 		else
 			return 0;
 	}
-	return p > t && p < t + THREAD_SIZE - size;
+	return p >= t && p < t + THREAD_SIZE - size;
 }
 
 unsigned long
@@ -98,6 +98,13 @@ print_context_stack(struct task_struct *task,
 {
 	struct stack_frame *frame = (struct stack_frame *)bp;
 
+	/*
+	 * If we overflowed the stack into a guard page, jump back to the
+	 * bottom of the usable stack.
+	 */
+	if ((unsigned long)task->stack - (unsigned long)stack < PAGE_SIZE)
+		stack = (unsigned long *)task->stack;
+
 	while (valid_stack_ptr(task, stack, sizeof(*stack), end)) {
 		unsigned long addr;
 
-- 
2.5.5

[toc] | [next] | [standalone]


#1430765 — Re: [PATCH v4 13/16] x86/dumpstack: Try harder to get a call trace on stack overflow

FromJosh Poimboeuf <jpoimboe@redhat.com>
Date2016-06-24 17:40 +0200
SubjectRe: [PATCH v4 13/16] x86/dumpstack: Try harder to get a call trace on stack overflow
Message-ID<rNBn4-1op-9@gated-at.bofh.it>
In reply to#1430350
On Thu, Jun 23, 2016 at 09:23:08PM -0700, Andy Lutomirski wrote:
> If we overflow the stack, print_context_stack will abort.  Detect
> this case and rewind back into the valid part of the stack so that
> we can trace it.
> 
> Signed-off-by: Andy Lutomirski <luto@kernel.org>

Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>

-- 
Josh

[toc] | [prev] | [next] | [standalone]


#1431546 — Re: [PATCH v4 13/16] x86/dumpstack: Try harder to get a call trace on stack overflow

FromAndy Lutomirski <luto@amacapital.net>
Date2016-06-26 19:10 +0200
SubjectRe: [PATCH v4 13/16] x86/dumpstack: Try harder to get a call trace on stack overflow
Message-ID<rOlJf-5Em-21@gated-at.bofh.it>
In reply to#1430765
On Fri, Jun 24, 2016 at 8:35 AM, Josh Poimboeuf <jpoimboe@redhat.com> wrote:
> On Thu, Jun 23, 2016 at 09:23:08PM -0700, Andy Lutomirski wrote:
>> If we overflow the stack, print_context_stack will abort.  Detect
>> this case and rewind back into the valid part of the stack so that
>> we can trace it.
>>
>> Signed-off-by: Andy Lutomirski <luto@kernel.org>
>
> Reviewed-by: Josh Poimboeuf <jpoimboe@redhat.com>
>

FWIW, I'm making a trivial change here for v4: task->stack ->
task_stack_page(task).  Since it seems inconsequential, I'm keeping
your reviewed-by.

> --
> Josh



-- 
Andy Lutomirski
AMA Capital Management, LLC

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web