Commit 6d54ceb5 authored by Eiichi Tsukata's avatar Eiichi Tsukata Committed by Steven Rostedt (VMware)

tracing: Fix user stack trace "??" output

Commit c5c27a0a ("x86/stacktrace: Remove the pointless ULONG_MAX
marker") removes ULONG_MAX marker from user stack trace entries but
trace_user_stack_print() still uses the marker and it outputs unnecessary
"??".

For example:

            less-1911  [001] d..2    34.758944: <user stack trace>
   =>  <00007f16f2295910>
   => ??
   => ??
   => ??
   => ??
   => ??
   => ??
   => ??

The user stack trace code zeroes the storage before saving the stack, so if
the trace is shorter than the maximum number of entries it can terminate
the print loop if a zero entry is detected.

Link: http://lkml.kernel.org/r/20190630085438.25545-1-devel@etsukata.com

Cc: stable@vger.kernel.org
Fixes: 4285f2fc ("tracing: Remove the ULONG_MAX stack trace hackery")
Signed-off-by: default avatarEiichi Tsukata <devel@etsukata.com>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent 0aeb1def
...@@ -1109,17 +1109,10 @@ static enum print_line_t trace_user_stack_print(struct trace_iterator *iter, ...@@ -1109,17 +1109,10 @@ static enum print_line_t trace_user_stack_print(struct trace_iterator *iter,
for (i = 0; i < FTRACE_STACK_ENTRIES; i++) { for (i = 0; i < FTRACE_STACK_ENTRIES; i++) {
unsigned long ip = field->caller[i]; unsigned long ip = field->caller[i];
if (ip == ULONG_MAX || trace_seq_has_overflowed(s)) if (!ip || trace_seq_has_overflowed(s))
break; break;
trace_seq_puts(s, " => "); trace_seq_puts(s, " => ");
if (!ip) {
trace_seq_puts(s, "??");
trace_seq_putc(s, '\n');
continue;
}
seq_print_user_ip(s, mm, ip, flags); seq_print_user_ip(s, mm, ip, flags);
trace_seq_putc(s, '\n'); trace_seq_putc(s, '\n');
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment