Messages in this thread | | | Date | Wed, 31 Jul 2013 22:40:03 +0200 | From | Oleg Nesterov <> | Subject | Re: [RFC][PATCH 3/4] tracing/kprobes: Fail to unregister if probe event files are open |
| |
On 07/31, Steven Rostedt wrote: > > On Wed, 2013-07-03 at 23:33 -0400, Steven Rostedt wrote: > > The above will corrupt the kprobe system, as the write to the enable > > file will happen after the kprobe was deleted. > > Oleg, > > The above no longer triggers the bug due to your changes. The race is > much tighter now
Yes, the changelog should be updated...
> and requires a process with the enable file opened and > races with a write to enable it where the removal of the trace file > checks the trace disabled, sees that it is, continues, but then the > write enables it just as it gets deleted.
This should be fine. Either event_remove() path takes event_mutex first and then ->write() fails, or ftrace_event_enable_disable() actually disables this even successfully.
> Do you know of a way to trigger this bug?
I'll try to think more tomorrow, but most probably no. The race is unlikely.
We need perf_trace_event_init() or ":enable_event:this-event" right before trace_remove_event_call() takes the mutex.
And right after the caller (kprobes) checks "disabled".
> Hmm, what happens without this patch now? If it is active, and we delete > it? It will call back into the kprobes and access a tracepoint that does > not exist? Would this cause a crash?
I think yes, the crash is possible.
perf or FL_SOFT_MODE, this call/file has the external references, and we are going to free it.
Oleg.
| |