From 71840f2372eccd92e10b2df03f65369e387568a8 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sun, 23 Aug 2020 13:00:19 +0200 Subject: [PATCH] Revert "tracing: Move pipe reference to trace array instead of current_tracer" This reverts commit 43e172e31badc6155314b14ce73d41571aecff2c which is commit 7ef282e05132d56b6f6b71e3873f317664bea78b upstream. This is being reverted as is can cause some crc changes in modversions due to the changes in trace.h. From the description of the patch itself: This is marked as "Fixes" but is more of a clean up than a true fix. Backport if you want, but its not critical. Bug: 161946584 Signed-off-by: Greg Kroah-Hartman Change-Id: I781e50e6ebe6a2d09c3a4ec2703e7bdbffe8e632 --- kernel/trace/trace.c | 12 ++++++------ kernel/trace/trace.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index f9c2bdbbd893..721947b9962d 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -5686,7 +5686,7 @@ static int tracing_set_tracer(struct trace_array *tr, const char *buf) } /* If trace pipe files are being read, we can't change the tracer */ - if (tr->trace_ref) { + if (tr->current_trace->ref) { ret = -EBUSY; goto out; } @@ -5902,7 +5902,7 @@ static int tracing_open_pipe(struct inode *inode, struct file *filp) nonseekable_open(inode, filp); - tr->trace_ref++; + tr->current_trace->ref++; out: mutex_unlock(&trace_types_lock); return ret; @@ -5921,7 +5921,7 @@ static int tracing_release_pipe(struct inode *inode, struct file *file) mutex_lock(&trace_types_lock); - tr->trace_ref--; + tr->current_trace->ref--; if (iter->trace->pipe_close) iter->trace->pipe_close(iter); @@ -7230,7 +7230,7 @@ static int tracing_buffers_open(struct inode *inode, struct file *filp) filp->private_data = info; - tr->trace_ref++; + tr->current_trace->ref++; mutex_unlock(&trace_types_lock); @@ -7331,7 +7331,7 @@ static int tracing_buffers_release(struct inode *inode, struct file *file) mutex_lock(&trace_types_lock); - iter->tr->trace_ref--; + iter->tr->current_trace->ref--; __trace_array_put(iter->tr); @@ -8470,7 +8470,7 @@ static int __remove_instance(struct trace_array *tr) { int i; - if (tr->ref || (tr->current_trace && tr->trace_ref)) + if (tr->ref || (tr->current_trace && tr->current_trace->ref)) return -EBUSY; list_del(&tr->list); diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 4055158c1dd2..a3c29d5fcc61 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -309,7 +309,6 @@ struct trace_array { struct trace_event_file *trace_marker_file; cpumask_var_t tracing_cpumask; /* only trace on set CPUs */ int ref; - int trace_ref; #ifdef CONFIG_FUNCTION_TRACER struct ftrace_ops *ops; struct trace_pid_list __rcu *function_pids; @@ -499,6 +498,7 @@ struct tracer { struct tracer *next; struct tracer_flags *flags; int enabled; + int ref; bool print_max; bool allow_instances; #ifdef CONFIG_TRACER_MAX_TRACE