diff options
| author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2026-07-26 20:40:07 -0300 |
|---|---|---|
| committer | Namhyung Kim <namhyung@kernel.org> | 2026-07-31 16:41:21 -0700 |
| commit | 23010160bb9fd6e7ce940e232cd660b37ab9b20b (patch) | |
| tree | 1e5dbee9400dabd16de739b252d065c37e3673e0 | |
| parent | bec06676f4b2a4276b6277783eb91cd3cffd4b33 (diff) | |
| download | linux-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.c | 6 |
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)) { |
