(2013/09/06 5:46), Steven Rostedt wrote: > On Mon, 2 Sep 2013 22:52:19 -0500 > Tom Zanussi <tom.zanu...@linux.intel.com> wrote: >> extern void destroy_preds(struct ftrace_event_call *call); >> diff --git a/kernel/trace/trace_events_trigger.c >> b/kernel/trace/trace_events_trigger.c >> index 85319cf..5388d55 100644 >> --- a/kernel/trace/trace_events_trigger.c >> +++ b/kernel/trace/trace_events_trigger.c >> @@ -28,6 +28,13 @@ >> static LIST_HEAD(trigger_commands); >> static DEFINE_MUTEX(trigger_cmd_mutex); >> >> +static void >> +trigger_data_free(struct event_trigger_data *data) >> +{ >> + synchronize_sched(); /* make sure current triggers exit before free */ > > Again, I think this can and should be synchronize_rcu(). >
As in the previous patch, event triggers called under preempt disabled. > +void event_triggers_call(struct ftrace_event_file *file) > +{ > + struct event_trigger_data *data; > + > + if (list_empty(&file->triggers)) > + return; > + > + preempt_disable_notrace(); > + list_for_each_entry_rcu(data, &file->triggers, list) > + data->ops->func(data); > + preempt_enable_notrace(); > +} In this case, I think synchronize_sched() is correct. Of course, we need to discuss why it needs to disable preempt here. :) Thank you, -- Masami HIRAMATSU IT Management Research Dept. Linux Technology Center Hitachi, Ltd., Yokohama Research Laboratory E-mail: masami.hiramatsu...@hitachi.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/