Commit 348f0fc2 authored by Steven Rostedt's avatar Steven Rostedt Committed by Steven Rostedt

tracing: Fix regression with tracing_on

The change to make tracing_on affect only the ftrace ring buffer, caused
a bug where it wont affect any ring buffer. The problem was that the buffer
of the trace_array was passed to the write function and not the trace array
itself.

The trace_array can change the buffer when running a latency tracer. If this
happens, then the buffer being disabled may not be the buffer currently used
by ftrace. This will cause the tracing_on file to become useless.

The simple fix is to pass the trace_array to the write function instead of
the buffer. Then the actual buffer may be changed.
Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
parent 6e48b550
...@@ -4629,7 +4629,8 @@ static ssize_t ...@@ -4629,7 +4629,8 @@ static ssize_t
rb_simple_read(struct file *filp, char __user *ubuf, rb_simple_read(struct file *filp, char __user *ubuf,
size_t cnt, loff_t *ppos) size_t cnt, loff_t *ppos)
{ {
struct ring_buffer *buffer = filp->private_data; struct trace_array *tr = filp->private_data;
struct ring_buffer *buffer = tr->buffer;
char buf[64]; char buf[64];
int r; int r;
...@@ -4647,7 +4648,8 @@ static ssize_t ...@@ -4647,7 +4648,8 @@ static ssize_t
rb_simple_write(struct file *filp, const char __user *ubuf, rb_simple_write(struct file *filp, const char __user *ubuf,
size_t cnt, loff_t *ppos) size_t cnt, loff_t *ppos)
{ {
struct ring_buffer *buffer = filp->private_data; struct trace_array *tr = filp->private_data;
struct ring_buffer *buffer = tr->buffer;
unsigned long val; unsigned long val;
int ret; int ret;
...@@ -4734,7 +4736,7 @@ static __init int tracer_init_debugfs(void) ...@@ -4734,7 +4736,7 @@ static __init int tracer_init_debugfs(void)
&trace_clock_fops); &trace_clock_fops);
trace_create_file("tracing_on", 0644, d_tracer, trace_create_file("tracing_on", 0644, d_tracer,
global_trace.buffer, &rb_simple_fops); &global_trace, &rb_simple_fops);
#ifdef CONFIG_DYNAMIC_FTRACE #ifdef CONFIG_DYNAMIC_FTRACE
trace_create_file("dyn_ftrace_total_info", 0444, d_tracer, trace_create_file("dyn_ftrace_total_info", 0444, d_tracer,
......
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