| From bcee5278958802b40ee8b26679155a6d9231783e Mon Sep 17 00:00:00 2001 |
| From: "Steven Rostedt (VMware)" <rostedt@goodmis.org> |
| Date: Fri, 4 Dec 2020 16:36:16 -0500 |
| Subject: tracing: Fix userstacktrace option for instances |
| |
| From: Steven Rostedt (VMware) <rostedt@goodmis.org> |
| |
| commit bcee5278958802b40ee8b26679155a6d9231783e upstream. |
| |
| When the instances were able to use their own options, the userstacktrace |
| option was left hardcoded for the top level. This made the instance |
| userstacktrace option bascially into a nop, and will confuse users that set |
| it, but nothing happens (I was confused when it happened to me!) |
| |
| Cc: stable@vger.kernel.org |
| Fixes: 16270145ce6b ("tracing: Add trace options for core options to instances") |
| Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| kernel/trace/trace.c | 7 ++++--- |
| kernel/trace/trace.h | 6 ++++-- |
| 2 files changed, 8 insertions(+), 5 deletions(-) |
| |
| --- a/kernel/trace/trace.c |
| +++ b/kernel/trace/trace.c |
| @@ -2404,7 +2404,7 @@ void trace_buffer_unlock_commit_regs(str |
| * two. They are that meaningful. |
| */ |
| ftrace_trace_stack(tr, buffer, flags, regs ? 0 : 4, pc, regs); |
| - ftrace_trace_userstack(buffer, flags, pc); |
| + ftrace_trace_userstack(tr, buffer, flags, pc); |
| } |
| |
| /* |
| @@ -2734,14 +2734,15 @@ void trace_dump_stack(int skip) |
| static DEFINE_PER_CPU(int, user_stack_count); |
| |
| void |
| -ftrace_trace_userstack(struct ring_buffer *buffer, unsigned long flags, int pc) |
| +ftrace_trace_userstack(struct trace_array *tr, |
| + struct ring_buffer *buffer, unsigned long flags, int pc) |
| { |
| struct trace_event_call *call = &event_user_stack; |
| struct ring_buffer_event *event; |
| struct userstack_entry *entry; |
| struct stack_trace trace; |
| |
| - if (!(global_trace.trace_flags & TRACE_ITER_USERSTACKTRACE)) |
| + if (!(tr->trace_flags & TRACE_ITER_USERSTACKTRACE)) |
| return; |
| |
| /* |
| --- a/kernel/trace/trace.h |
| +++ b/kernel/trace/trace.h |
| @@ -739,13 +739,15 @@ void update_max_tr_single(struct trace_a |
| #endif /* CONFIG_TRACER_MAX_TRACE */ |
| |
| #ifdef CONFIG_STACKTRACE |
| -void ftrace_trace_userstack(struct ring_buffer *buffer, unsigned long flags, |
| +void ftrace_trace_userstack(struct trace_array *tr, |
| + struct ring_buffer *buffer, unsigned long flags, |
| int pc); |
| |
| void __trace_stack(struct trace_array *tr, unsigned long flags, int skip, |
| int pc); |
| #else |
| -static inline void ftrace_trace_userstack(struct ring_buffer *buffer, |
| +static inline void ftrace_trace_userstack(struct trace_array *tr, |
| + struct ring_buffer *buffer, |
| unsigned long flags, int pc) |
| { |
| } |