| From 6d54ceb539aacc3df65c89500e8b045924f3ef81 Mon Sep 17 00:00:00 2001 |
| From: Eiichi Tsukata <devel@etsukata.com> |
| Date: Sun, 30 Jun 2019 17:54:38 +0900 |
| Subject: tracing: Fix user stack trace "??" output |
| |
| From: Eiichi Tsukata <devel@etsukata.com> |
| |
| commit 6d54ceb539aacc3df65c89500e8b045924f3ef81 upstream. |
| |
| Commit c5c27a0a5838 ("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: 4285f2fcef80 ("tracing: Remove the ULONG_MAX stack trace hackery") |
| Signed-off-by: Eiichi Tsukata <devel@etsukata.com> |
| Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| kernel/trace/trace_output.c | 9 +-------- |
| 1 file changed, 1 insertion(+), 8 deletions(-) |
| |
| --- a/kernel/trace/trace_output.c |
| +++ b/kernel/trace/trace_output.c |
| @@ -1109,17 +1109,10 @@ static enum print_line_t trace_user_stac |
| for (i = 0; i < FTRACE_STACK_ENTRIES; i++) { |
| unsigned long ip = field->caller[i]; |
| |
| - if (ip == ULONG_MAX || trace_seq_has_overflowed(s)) |
| + if (!ip || trace_seq_has_overflowed(s)) |
| break; |
| |
| trace_seq_puts(s, " => "); |
| - |
| - if (!ip) { |
| - trace_seq_puts(s, "??"); |
| - trace_seq_putc(s, '\n'); |
| - continue; |
| - } |
| - |
| seq_print_user_ip(s, mm, ip, flags); |
| trace_seq_putc(s, '\n'); |
| } |