mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-02-20 02:17:22 +07:00
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: Steven Rostedt <rostedt@goodmis.org>
This commit is contained in:
parent
6e48b550d1
commit
348f0fc238
@ -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
|
|||||||
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)
|
|||||||
&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,
|
||||||
|
Loading…
Reference in New Issue
Block a user