Messages in this thread | | | Date | Tue, 27 Aug 2013 16:08:27 -0400 | From | Steven Rostedt <> | Subject | Re: [PATCH v7 01/10] tracing: Add support for SOFT_DISABLE to syscall events |
| |
On Tue, 27 Aug 2013 14:40:13 -0500 Tom Zanussi <tom.zanussi@linux.intel.com> wrote:
> @@ -415,9 +429,14 @@ static void unreg_event_syscall_enter(struct ftrace_event_file *file, > return; > mutex_lock(&syscall_trace_lock); > tr->sys_refcount_enter--; > - clear_bit(num, tr->enabled_enter_syscalls); > + rcu_assign_pointer(tr->enter_syscall_files[num], NULL); > if (!tr->sys_refcount_enter) > unregister_trace_sys_enter(ftrace_syscall_enter, tr); > + /* > + * Callers expect the event to be completely disabled on > + * return, so wait for current handlers to finish. > + */ > + synchronize_sched(); > mutex_unlock(&syscall_trace_lock); > } > > @@ -435,7 +454,7 @@ static int reg_event_syscall_exit(struct ftrace_event_file *file, > if (!tr->sys_refcount_exit) > ret = register_trace_sys_exit(ftrace_syscall_exit, tr); > if (!ret) { > - set_bit(num, tr->enabled_exit_syscalls); > + rcu_assign_pointer(tr->exit_syscall_files[num], file); > tr->sys_refcount_exit++; > } > mutex_unlock(&syscall_trace_lock); > @@ -453,9 +472,14 @@ static void unreg_event_syscall_exit(struct ftrace_event_file *file, > return; > mutex_lock(&syscall_trace_lock); > tr->sys_refcount_exit--; > - clear_bit(num, tr->enabled_exit_syscalls); > + rcu_assign_pointer(tr->exit_syscall_files[num], NULL); > if (!tr->sys_refcount_exit) > unregister_trace_sys_exit(ftrace_syscall_exit, tr); > + /* > + * Callers expect the event to be completely disabled on > + * return, so wait for current handlers to finish. > + */ > + synchronize_sched(); > mutex_unlock(&syscall_trace_lock);
Can we do the synchronize_sched() after the mutex unlock in these two places?
-- Steve
> } >
| |