On Wed, 29 Mar 2017 11:20:37 +0900 Namhyung Kim <namhy...@kernel.org> wrote:
> > Actually, if this is called after event_trace_del_tracer(), the tr is > > already invisible and nothing new should change. > > I don't follow. After event_trace_del_tracer(), the tr is invisible > from the probe of event tracing but still is visible from the probe of > function tracing, right? Well, nothing should be able to get to the set_ftrace_filter file when there. Because of the tr->ref count. But keeping the lock is safer regardless, and it's not a fast path, so the extra overhead if the lock isn't needed is no big deal. > > > > > Make a wrapper around clear_ftrace_pids() and call that instead. We > > don't even need to take a lock, but as I see there's a lockdep test for > > ftrace_lock, we should still do so just to be safe. > > Right, that's why I call ftrace_pid_reset() instead of > clear_ftrace_pids(). So do you prefer adding a new wrapper like below > rather than reusing ftrace_pid_reset() with a new argument? Yes, because the bool passed in is confusing. A separate function like below is more descriptive. -- Steve > > Thanks, > Namhyung > > > > > > void ftrace_clear_pids(struct trace_array *tr) > > { > > mutex_lock(&ftrace_lock); > > > > clear_ftrace_pids(tr); > > > > mutex_unlock(&ftrace_lock); > > }