summaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace_stack.c
diff options
context:
space:
mode:
authorSteven Rostedt <rostedt@goodmis.org>2008-10-06 21:24:18 -0400
committerIngo Molnar <mingo@elte.hu>2008-10-20 18:31:37 +0200
commit81520a1b0649d0701205b818714a8c1e1cfbbb5b (patch)
treea455ec060f28371b17374db2f934fc66dc7067ef /kernel/trace/trace_stack.c
parent3ce83aea86bf46fd1bff59d2e6d16f48fdce22fc (diff)
downloadlinux-81520a1b0649d0701205b818714a8c1e1cfbbb5b.tar.gz
linux-81520a1b0649d0701205b818714a8c1e1cfbbb5b.tar.bz2
linux-81520a1b0649d0701205b818714a8c1e1cfbbb5b.zip
ftrace: stack tracer only record when on stack
The stack trace API does not record if the stack is not on the current task's stack. That is, if the stack is the interrupt stack or NMI stack, the output does not show. Also, the size of those stacks are not consistent with the size of the thread stack, this makes the calculation of the stack size usually bogus. This all confuses the stack tracer. I unfortunately do not have time to fix all these problems, but this patch does record the worst stack when the stack pointer is on the tasks stack (instead of bogus numbers). The patch simply returns if the stack pointer is not on the task's stack. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/trace/trace_stack.c')
-rw-r--r--kernel/trace/trace_stack.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/trace/trace_stack.c b/kernel/trace/trace_stack.c
index 74c5d9a3afae..be682b62fe58 100644
--- a/kernel/trace/trace_stack.c
+++ b/kernel/trace/trace_stack.c
@@ -44,6 +44,10 @@ static inline void check_stack(void)
if (this_size <= max_stack_size)
return;
+ /* we do not handle interrupt stacks yet */
+ if (!object_is_on_stack(&this_size))
+ return;
+
raw_local_irq_save(flags);
__raw_spin_lock(&max_stack_lock);