forked from luck/tmp_suning_uos_patched
Fix userstacktrace option for instances
While writing an application that requires user stack trace option to work in instances, I found that the instance option has a bug that makes it a nop. The check for performing the user stack trace in an instance, checks the top level options (not the instance options) to determine if a user stack trace should be performed or not. This is not only incorrect, but also confusing for users. It confused me for a bit! -----BEGIN PGP SIGNATURE----- iIoEABYIADIWIQRRSw7ePDh/lE+zeZMp5XQQmuv6qgUCX85BzBQccm9zdGVkdEBn b29kbWlzLm9yZwAKCRAp5XQQmuv6qv7XAQCzfq6DpHUv1gVaBkGytOszLW4IuEtd /09jDPbVSG8T2QEA+e6fpBP1aIixgLN6+vFVl3wAK3SaIQeIA/blkbBNFQ0= =o1Ew -----END PGP SIGNATURE----- Merge tag 'trace-v5.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace Pull tracing fix from Steven Rostedt: "Fix userstacktrace option for instances While writing an application that requires user stack trace option to work in instances, I found that the instance option has a bug that makes it a nop. The check for performing the user stack trace in an instance, checks the top level options (not the instance options) to determine if a user stack trace should be performed or not. This is not only incorrect, but also confusing for users. It confused me for a bit!" * tag 'trace-v5.10-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: tracing: Fix userstacktrace option for instances
This commit is contained in:
commit
cd796ed334
|
@ -163,7 +163,8 @@ static union trace_eval_map_item *trace_eval_maps;
|
|||
#endif /* CONFIG_TRACE_EVAL_MAP_FILE */
|
||||
|
||||
int tracing_set_tracer(struct trace_array *tr, const char *buf);
|
||||
static void ftrace_trace_userstack(struct trace_buffer *buffer,
|
||||
static void ftrace_trace_userstack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned long flags, int pc);
|
||||
|
||||
#define MAX_TRACER_SIZE 100
|
||||
|
@ -2870,7 +2871,7 @@ void trace_buffer_unlock_commit_regs(struct trace_array *tr,
|
|||
* two. They are not that meaningful.
|
||||
*/
|
||||
ftrace_trace_stack(tr, buffer, flags, regs ? 0 : STACK_SKIP, pc, regs);
|
||||
ftrace_trace_userstack(buffer, flags, pc);
|
||||
ftrace_trace_userstack(tr, buffer, flags, pc);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -3056,13 +3057,14 @@ EXPORT_SYMBOL_GPL(trace_dump_stack);
|
|||
static DEFINE_PER_CPU(int, user_stack_count);
|
||||
|
||||
static void
|
||||
ftrace_trace_userstack(struct trace_buffer *buffer, unsigned long flags, int pc)
|
||||
ftrace_trace_userstack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer, unsigned long flags, int pc)
|
||||
{
|
||||
struct trace_event_call *call = &event_user_stack;
|
||||
struct ring_buffer_event *event;
|
||||
struct userstack_entry *entry;
|
||||
|
||||
if (!(global_trace.trace_flags & TRACE_ITER_USERSTACKTRACE))
|
||||
if (!(tr->trace_flags & TRACE_ITER_USERSTACKTRACE))
|
||||
return;
|
||||
|
||||
/*
|
||||
|
@ -3101,7 +3103,8 @@ ftrace_trace_userstack(struct trace_buffer *buffer, unsigned long flags, int pc)
|
|||
preempt_enable();
|
||||
}
|
||||
#else /* CONFIG_USER_STACKTRACE_SUPPORT */
|
||||
static void ftrace_trace_userstack(struct trace_buffer *buffer,
|
||||
static void ftrace_trace_userstack(struct trace_array *tr,
|
||||
struct trace_buffer *buffer,
|
||||
unsigned long flags, int pc)
|
||||
{
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user