perf: Use tracepoint_synchronize_unregister() to flush any pending tracepoint call
We use synchronize_sched() to ensure a tracepoint won't be called while/after we release the perf buffers it references. But the tracepoint API has its own API for that: tracepoint_synchronize_unregister(). Use it instead as it's self-explanatory and eases maintainance. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Li Zefan <lizf@cn.fujitsu.com>
This commit is contained in:
parent
3a01736e70
commit
669336e4cf
|
@ -131,10 +131,10 @@ void perf_trace_destroy(struct perf_event *p_event)
|
||||||
tp_event->class->reg(tp_event, TRACE_REG_PERF_UNREGISTER);
|
tp_event->class->reg(tp_event, TRACE_REG_PERF_UNREGISTER);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ensure our callback won't be called anymore. See
|
* Ensure our callback won't be called anymore. The buffers
|
||||||
* tracepoint_probe_unregister() and __DO_TRACE().
|
* will be freed after that.
|
||||||
*/
|
*/
|
||||||
synchronize_sched();
|
tracepoint_synchronize_unregister();
|
||||||
|
|
||||||
free_percpu(tp_event->perf_events);
|
free_percpu(tp_event->perf_events);
|
||||||
tp_event->perf_events = NULL;
|
tp_event->perf_events = NULL;
|
||||||
|
|
Loading…
Reference in New Issue