All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] perf list: Fix memory leaks in print_tracepoint_events()
@ 2023-04-27 23:05 Namhyung Kim
  2023-04-27 23:05 ` [PATCH 2/2] perf list: Modify the warning message about scandirat(3) Namhyung Kim
  2023-04-28  0:27 ` [PATCH 1/2] perf list: Fix memory leaks in print_tracepoint_events() Ian Rogers
  0 siblings, 2 replies; 5+ messages in thread
From: Namhyung Kim @ 2023-04-27 23:05 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo, Jiri Olsa
  Cc: Ian Rogers, Adrian Hunter, Peter Zijlstra, Ingo Molnar, LKML,
	linux-perf-users

It should free entries (not only the array) filled by scandirat()
after use.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
 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


^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-04-29  1:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-27 23:05 [PATCH 1/2] perf list: Fix memory leaks in print_tracepoint_events() Namhyung Kim
2023-04-27 23:05 ` [PATCH 2/2] perf list: Modify the warning message about scandirat(3) Namhyung Kim
2023-04-28  0:30   ` Ian Rogers
2023-04-28  0:27 ` [PATCH 1/2] perf list: Fix memory leaks in print_tracepoint_events() Ian Rogers
2023-04-29  1:30   ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.