summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2026-07-26 20:40:07 -0300
committerNamhyung Kim <namhyung@kernel.org>2026-07-31 16:41:21 -0700
commit23010160bb9fd6e7ce940e232cd660b37ab9b20b (patch)
tree1e5dbee9400dabd16de739b252d065c37e3673e0
parentbec06676f4b2a4276b6277783eb91cd3cffd4b33 (diff)
downloadlinux-stable-23010160bb9fd6e7ce940e232cd660b37ab9b20b.tar.gz
linux-stable-23010160bb9fd6e7ce940e232cd660b37ab9b20b.zip
perf machine: Fix fd leak on bounds check in maps__set_modules_path_dir()
The bounds check for root_len >= path_size returns -1 directly without closing the directory fd opened by io_dir__init() a few lines above. Jump to the out label instead, which calls close(iod.dirfd). Fixes: e7af1946818b ("perf machine: Reuse module path buffer") Reported-by: sashiko-bot <sashiko-bot@kernel.org> Cc: Ian Rogers <irogers@google.com> Assisted-by: Claude:claude-opus-4.6 Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Namhyung Kim <namhyung@kernel.org>
-rw-r--r--tools/perf/util/machine.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 0d2ebf6a84bc..503f5a65e0cc 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -1411,8 +1411,10 @@ static int maps__set_modules_path_dir(struct maps *maps, char *path, size_t path
return -1;
}
/* Bounds check, should never happen. */
- if (root_len >= path_size)
- return -1;
+ if (root_len >= path_size) {
+ ret = -1;
+ goto out;
+ }
path[root_len++] = '/';
while ((dent = io_dir__readdir(&iod)) != NULL) {
if (io_dir__is_dir(&iod, dent)) {