On Wed, 1 Jul 2026 17:48:29 -0400 Steven Rostedt <[email protected]> wrote:
> From: Steven Rostedt <[email protected]> > > The enable_data variable gets freed on most error paths in > event_enable_trigger_parse(). Use free() to free it and just before > returning normally, call no_free_ptr(enable_data) to keep it from being > freed. > This looks good to me. Reviewed-by: Masami Hiramatsu (Google) <[email protected]> Thank you, > Signed-off-by: Steven Rostedt <[email protected]> > --- > kernel/trace/trace_events_trigger.c | 12 ++++-------- > 1 file changed, 4 insertions(+), 8 deletions(-) > > diff --git a/kernel/trace/trace_events_trigger.c > b/kernel/trace/trace_events_trigger.c > index 655db2e82513..fe5ca6ac7c8d 100644 > --- a/kernel/trace/trace_events_trigger.c > +++ b/kernel/trace/trace_events_trigger.c > @@ -1739,7 +1739,7 @@ int event_enable_trigger_parse(struct event_command > *cmd_ops, > char *glob, char *cmd, char *param_and_filter) > { > struct trace_event_file *event_enable_file; > - struct enable_trigger_data *enable_data; > + struct enable_trigger_data *enable_data __free(kfree) = NULL; > struct event_trigger_data *trigger_data; > struct trace_array *tr = file->tr; > char *param, *filter; > @@ -1789,17 +1789,13 @@ int event_enable_trigger_parse(struct event_command > *cmd_ops, > enable_data->file = event_enable_file; > > trigger_data = trigger_data_alloc(cmd_ops, cmd, param, enable_data); > - if (!trigger_data) { > - kfree(enable_data); > + if (!trigger_data) > return ret; > - } > > if (remove) { > event_trigger_unregister(cmd_ops, file, glob+1, trigger_data); > kfree(trigger_data); > - kfree(enable_data); > - ret = 0; > - return ret; > + return 0; > } > > /* Up the trigger_data count to make sure nothing frees it on failure */ > @@ -1829,6 +1825,7 @@ int event_enable_trigger_parse(struct event_command > *cmd_ops, > goto out_disable; > > event_trigger_free(trigger_data); > + no_free_ptr(enable_data); > return ret; > out_disable: > trace_event_enable_disable(event_enable_file, 0, 1); > @@ -1837,7 +1834,6 @@ int event_enable_trigger_parse(struct event_command > *cmd_ops, > out_free: > event_trigger_reset_filter(cmd_ops, trigger_data); > event_trigger_free(trigger_data); > - kfree(enable_data); > > return ret; > } > -- > 2.53.0 > -- Masami Hiramatsu (Google) <[email protected]>
