On Fri, 9 Aug 2024 13:34:28 -0400 (EDT) John Kacur <jkacur@xxxxxxxxxx> wrote: > On Fri, 9 Aug 2024, Dan Carpenter wrote: > > > If the "tool->data" allocation fails then there is no need to call > > osnoise_free_top() and, in fact, doing so will lead to a NULL dereference. > > > > Fixes: 1eceb2fc2ca5 ("rtla/osnoise: Add osnoise top mode") > > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > > --- > > tools/tracing/rtla/src/osnoise_top.c | 11 ++++------- > > 1 file changed, 4 insertions(+), 7 deletions(-) > > > > diff --git a/tools/tracing/rtla/src/osnoise_top.c b/tools/tracing/rtla/src/osnoise_top.c > > index f594a44df840..2f756628613d 100644 > > --- a/tools/tracing/rtla/src/osnoise_top.c > > +++ b/tools/tracing/rtla/src/osnoise_top.c > > @@ -651,8 +651,10 @@ struct osnoise_tool *osnoise_init_top(struct osnoise_top_params *params) > > return NULL; > > > > tool->data = osnoise_alloc_top(nr_cpus); > > - if (!tool->data) > > - goto out_err; > > + if (!tool->data) { > > + osnoise_destroy_tool(tool); > > + return NULL; > > + } > > > > tool->params = params; > > > > @@ -660,11 +662,6 @@ struct osnoise_tool *osnoise_init_top(struct osnoise_top_params *params) > > osnoise_top_handler, NULL); > > > > return tool; > > - > > -out_err: > > - osnoise_free_top(tool->data); > > - osnoise_destroy_tool(tool); > > - return NULL; > > } > > > > static int stop_tracing; > > -- > > Although your fix appears to be correct, I wonder if it would be better to > create a second error label, such as out_destroy_tool: as described in > section 7 of the coding-style.rst > There's no reason for that. It's the only error path. That is, nothing would jump to the original out_err: And for a single error, an if statement is good enough. -- Steve