On Mon, 10 Feb 2020 17:06:49 -0600 Tom Zanussi <zanussi@xxxxxxxxxx> wrote: > There's no reason to return -EINVAL when tracing a synthetic event if > it's soft disabled - treat it the same as if it were hard disabled and > return normally. > > Have synth_event_trace() and synth_event_trace_array() just return > normally, and have synth_event_trace_start set the trace state to > disabled and return. > Looks good to me. Reviewed-by: Masami Hiramatsu <mhiramat@xxxxxxxxxx> Thanks, > Signed-off-by: Tom Zanussi <zanussi@xxxxxxxxxx> > --- > kernel/trace/trace_events_hist.c | 20 ++++++-------------- > 1 file changed, 6 insertions(+), 14 deletions(-) > > diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c > index a546ffa14785..99a02168599b 100644 > --- a/kernel/trace/trace_events_hist.c > +++ b/kernel/trace/trace_events_hist.c > @@ -1828,7 +1828,8 @@ int synth_event_trace(struct trace_event_file *file, unsigned int n_vals, ...) > * called directly by the user, we don't have that but we > * still need to honor not logging when disabled. > */ > - if (!(file->flags & EVENT_FILE_FL_ENABLED)) > + if (!(file->flags & EVENT_FILE_FL_ENABLED) || > + trace_trigger_soft_disabled(file)) > return 0; > > event = file->event_call->data; > @@ -1836,9 +1837,6 @@ int synth_event_trace(struct trace_event_file *file, unsigned int n_vals, ...) > if (n_vals != event->n_fields) > return -EINVAL; > > - if (trace_trigger_soft_disabled(file)) > - return -EINVAL; > - > fields_size = event->n_u64 * sizeof(u64); > > /* > @@ -1918,7 +1916,8 @@ int synth_event_trace_array(struct trace_event_file *file, u64 *vals, > * called directly by the user, we don't have that but we > * still need to honor not logging when disabled. > */ > - if (!(file->flags & EVENT_FILE_FL_ENABLED)) > + if (!(file->flags & EVENT_FILE_FL_ENABLED) || > + trace_trigger_soft_disabled(file)) > return 0; > > event = file->event_call->data; > @@ -1926,9 +1925,6 @@ int synth_event_trace_array(struct trace_event_file *file, u64 *vals, > if (n_vals != event->n_fields) > return -EINVAL; > > - if (trace_trigger_soft_disabled(file)) > - return -EINVAL; > - > fields_size = event->n_u64 * sizeof(u64); > > /* > @@ -2017,7 +2013,8 @@ int synth_event_trace_start(struct trace_event_file *file, > * trace case, we save the enabed state upon start and just > * ignore the following data calls. > */ > - if (!(file->flags & EVENT_FILE_FL_ENABLED)) { > + if (!(file->flags & EVENT_FILE_FL_ENABLED) || > + trace_trigger_soft_disabled(file)) { > trace_state->enabled = false; > goto out; > } > @@ -2026,11 +2023,6 @@ int synth_event_trace_start(struct trace_event_file *file, > > trace_state->event = file->event_call->data; > > - if (trace_trigger_soft_disabled(file)) { > - ret = -EINVAL; > - goto out; > - } > - > fields_size = trace_state->event->n_u64 * sizeof(u64); > > /* > -- > 2.14.1 > -- Masami Hiramatsu <mhiramat@xxxxxxxxxx>