diff options
author | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2018-08-09 21:31:48 +0200 |
---|---|---|
committer | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2018-08-10 21:12:01 +0200 |
commit | e0a568dcd18bdaa77877d558700ce4d3bbbb12b8 (patch) | |
tree | 98962d8b1862aa1422e2e79021a6019a5a232a10 /kernel/trace/trace_events_hist.c | |
parent | ftrace: Remove unused pointer ftrace_swapper_pid (diff) | |
download | linux-e0a568dcd18bdaa77877d558700ce4d3bbbb12b8.tar.xz linux-e0a568dcd18bdaa77877d558700ce4d3bbbb12b8.zip |
tracing: Fix synchronizing to event changes with tracepoint_synchronize_unregister()
Now that some trace events can be protected by srcu_read_lock(tracepoint_srcu),
we need to make sure all locations that depend on this are also protected.
There were many places that did a synchronize_sched() thinking that it was
enough to protect againts access to trace events. This use to be the case,
but now that we use SRCU for _rcuidle() trace events, they may not be
protected by synchronize_sched(), as they may be called in paths that RCU is
not watching for preempt disable.
Fixes: e6753f23d961d ("tracepoint: Make rcuidle tracepoint callers use SRCU")
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Diffstat (limited to 'kernel/trace/trace_events_hist.c')
-rw-r--r-- | kernel/trace/trace_events_hist.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c index aae18af94c94..c522b51d9909 100644 --- a/kernel/trace/trace_events_hist.c +++ b/kernel/trace/trace_events_hist.c @@ -5141,7 +5141,7 @@ static void hist_clear(struct event_trigger_data *data) if (data->name) pause_named_trigger(data); - synchronize_sched(); + tracepoint_synchronize_unregister(); tracing_map_clear(hist_data->map); |