Messages in this thread | | | Date | Fri, 28 Apr 2023 22:30:01 -0300 | From | Arnaldo Carvalho de Melo <> | Subject | Re: [PATCH 1/2] perf list: Fix memory leaks in print_tracepoint_events() |
| |
Em Thu, Apr 27, 2023 at 05:27:50PM -0700, Ian Rogers escreveu: > On Thu, Apr 27, 2023 at 4:05 PM Namhyung Kim <namhyung@kernel.org> wrote: > > > > It should free entries (not only the array) filled by scandirat() > > after use. > > > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > > Reviewed-by: Ian Rogers <irogers@google.com>
Thanks, applied the series.
- Arnaldo
> Thanks, > Ian > > > --- > > tools/perf/util/print-events.c | 12 ++++++++---- > > 1 file changed, 8 insertions(+), 4 deletions(-) > > > > diff --git a/tools/perf/util/print-events.c b/tools/perf/util/print-events.c > > index d416c5484cd5..0a97912fd894 100644 > > --- a/tools/perf/util/print-events.c > > +++ b/tools/perf/util/print-events.c > > @@ -83,11 +83,11 @@ void print_tracepoint_events(const struct print_callbacks *print_cb __maybe_unus > > if (sys_dirent->d_type != DT_DIR || > > !strcmp(sys_dirent->d_name, ".") || > > !strcmp(sys_dirent->d_name, "..")) > > - continue; > > + goto next_sys; > > > > dir_fd = openat(events_fd, sys_dirent->d_name, O_PATH); > > if (dir_fd < 0) > > - continue; > > + goto next_sys; > > > > evt_items = scandirat(events_fd, sys_dirent->d_name, &evt_namelist, NULL, alphasort); > > for (int j = 0; j < evt_items; j++) { > > @@ -98,12 +98,12 @@ void print_tracepoint_events(const struct print_callbacks *print_cb __maybe_unus > > if (evt_dirent->d_type != DT_DIR || > > !strcmp(evt_dirent->d_name, ".") || > > !strcmp(evt_dirent->d_name, "..")) > > - continue; > > + goto next_evt; > > > > snprintf(evt_path, sizeof(evt_path), "%s/id", evt_dirent->d_name); > > evt_fd = openat(dir_fd, evt_path, O_RDONLY); > > if (evt_fd < 0) > > - continue; > > + goto next_evt; > > close(evt_fd); > > > > snprintf(evt_path, MAXPATHLEN, "%s:%s", > > @@ -119,9 +119,13 @@ void print_tracepoint_events(const struct print_callbacks *print_cb __maybe_unus > > /*desc=*/NULL, > > /*long_desc=*/NULL, > > /*encoding_desc=*/NULL); > > +next_evt: > > + free(evt_namelist[j]); > > } > > close(dir_fd); > > free(evt_namelist); > > +next_sys: > > + free(sys_namelist[i]); > > } > > > > free(sys_namelist); > > -- > > 2.40.1.495.gc816e09b53d-goog > >
--
- Arnaldo
| |