Skip to content

Commit

Permalink
tracing: Disable tracers before deletion of instance
Browse files Browse the repository at this point in the history
When an instance is about to be deleted, make sure the tracer
is set to nop. If it isn't reset the tracer and set it to the nop
tracer, otherwise memory leaks and bad pointers may result.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
  • Loading branch information
Steven Rostedt (Red Hat) committed Feb 20, 2014
1 parent e6435e9 commit 6b450d2
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions kernel/trace/trace.c
Original file line number Diff line number Diff line change
Expand Up @@ -3907,6 +3907,23 @@ create_trace_option_files(struct trace_array *tr, struct tracer *tracer);
static void
destroy_trace_option_files(struct trace_option_dentry *topts);

/*
* Used to clear out the tracer before deletion of an instance.
* Must have trace_types_lock held.
*/
static void tracing_set_nop(struct trace_array *tr)
{
if (tr->current_trace == &nop_trace)
return;

tr->current_trace->enabled = false;

if (tr->current_trace->reset)
tr->current_trace->reset(tr);

tr->current_trace = &nop_trace;
}

static int tracing_set_tracer(struct trace_array *tr, const char *buf)
{
static struct trace_option_dentry *topts;
Expand Down Expand Up @@ -6142,6 +6159,7 @@ static int instance_delete(const char *name)

list_del(&tr->list);

tracing_set_nop(tr);
event_trace_del_tracer(tr);
debugfs_remove_recursive(tr->dir);
free_percpu(tr->trace_buffer.data);
Expand Down

0 comments on commit 6b450d2

Please sign in to comment.