Messages in this thread | | | From | Namhyung Kim <> | Subject | Re: [PATCH] tools/perf/util: Fix memory leak in trace-event-info.c | Date | Thu, 10 Oct 2013 17:16:41 +0900 |
| |
Hi Felipe,
On Wed, 9 Oct 2013 23:28:55 -0300, Felipe Pena wrote: > Fix for a memory leak on tracing_data_get() function when returning NULL explicitly
Thanks for fixing this bug. Please see comment below.
> > Signed-off-by: Felipe Pena <felipensp@gmail.com> > --- > tools/perf/util/trace-event-info.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/tools/perf/util/trace-event-info.c b/tools/perf/util/trace-event-info.c > index f3c9e55..06f8624 100644 > --- a/tools/perf/util/trace-event-info.c > +++ b/tools/perf/util/trace-event-info.c > @@ -518,13 +518,13 @@ struct tracing_data *tracing_data_get(struct list_head *pattrs, > "/tmp/perf-XXXXXX"); > if (!mkstemp(tdata->temp_file)) { > pr_debug("Can't make temp file"); > - return NULL; > + goto err_tdata; > } > > temp_fd = open(tdata->temp_file, O_RDWR); > if (temp_fd < 0) { > pr_debug("Can't read '%s'", tdata->temp_file); > - return NULL; > + goto err_tdata; > } > > /* > @@ -569,6 +569,10 @@ out: > > put_tracepoints_path(tps); > return tdata; > + > +err_tdata: > + free(tdata); > + return NULL; > }
It should call put_tracepoints_path() too in case of error. So I suggest that setting err to an appropriate code and goto if (err) block above put_tracepoints_path().
Thanks, Namhyung
| |