Oleg Nesterov 2816c551c7 tracing: trace_remove_event_call() should fail if call/file is in use
Change trace_remove_event_call(call) to return the error if this
call is active. This is what the callers assume but can't verify
outside of the tracing locks. Both trace_kprobe.c/trace_uprobe.c
need the additional changes, unregister_trace_probe() should abort
if trace_remove_event_call() fails.

The caller is going to free this call/file so we must ensure that
nobody can use them after trace_remove_event_call() succeeds.
debugfs should be fine after the previous changes and event_remove()
does TRACE_REG_UNREGISTER, but still there are 2 reasons why we need
the additional checks:

- There could be a perf_event(s) attached to this tp_event, so the
  patch checks ->perf_refcount.

- TRACE_REG_UNREGISTER can be suppressed by FTRACE_EVENT_FL_SOFT_MODE,
  so we simply check FTRACE_EVENT_FL_ENABLED protected by event_mutex.

Link: http://lkml.kernel.org/r/20130729175033.GB26284@redhat.com

Reviewed-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
2013-07-31 13:12:48 -04:00
..
2013-07-18 12:48:40 -07:00
2013-04-22 07:09:06 -07:00
2012-05-31 17:49:27 -07:00
2012-03-28 18:30:03 +01:00
2013-04-15 13:25:16 +02:00
2013-06-25 23:11:19 +02:00
2012-12-20 17:40:19 -08:00
2012-05-29 23:28:41 -04:00
2013-07-02 15:38:19 +09:30
2013-07-03 16:08:05 -07:00
2013-05-05 00:16:35 -04:00
2013-04-29 13:55:38 -07:00