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:
Frederic Weisbecker 2010-07-20 17:29:54 +02:00
parent 3a01736e70
commit 669336e4cf
1 changed files with 3 additions and 3 deletions

View File

@ -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;