Messages in this thread | | | Date | Mon, 8 Jul 2013 16:25:33 +0200 | From | Oleg Nesterov <> | Subject | Re: [RFC][PATCH 3/4] tracing/kprobes: Fail to unregister if probe event files are open |
| |
On 07/08, Masami Hiramatsu wrote: > > (2013/07/06 2:26), Oleg Nesterov wrote: > (Perhaps, uprobes too.)
Sure, uprobes needs all the same fixes, lets ignore it for now.
> >> A safe way is to wait rcu always right after disable_*probe > >> in disable_trace_probe. If we have an unused link, we can > >> free it after that. > > > > Aaaah... I am starting to understand... Even if kprobe_perf_func() > > is fine, synchronize_sched() is calles _before_ disable_kprobe() > > and thus it can't synchronize with the handlers which hit this probe > > after we start synchronize_sched(). > > > > Did you mean this or I misssed something else? > > Right, thus perf path also need to be synchronized.
kprobe_perf_func() looks fine. This path can't use anything which can be freed by trace_remove_event_call(). We are going to free tp / tp->call but only after unregister_kprobe().
Afaics. But even if I am right, I agree it would be safer to not rely on this and simply do synchronize_sched() after disable as you suggested.
Thanks,
Oleg.
| |