Re: [PATCH 2/3] tracing: Don't return -EINVAL when tracing soft disabled synth events
From: Masami Hiramatsu
Date: Tue Feb 11 2020 - 22:24:25 EST
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>