| From d18292b8d5ce67eb1b10f79776d7b112b2ec1bb1 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Fri, 16 Jul 2021 16:11:20 +0200 |
| Subject: perf data: Close all files in close_dir() |
| |
| From: Riccardo Mancini <rickyman7@gmail.com> |
| |
| [ Upstream commit d4b3eedce151e63932ce4a00f1d0baa340a8b907 ] |
| |
| When using 'perf report' in directory mode, the first file is not closed |
| on exit, causing a memory leak. |
| |
| The problem is caused by the iterating variable never reaching 0. |
| |
| Fixes: 145520631130bd64 ("perf data: Add perf_data__(create_dir|close_dir) functions") |
| Signed-off-by: Riccardo Mancini <rickyman7@gmail.com> |
| Acked-by: Namhyung Kim <namhyung@kernel.org> |
| Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> |
| Cc: Ian Rogers <irogers@google.com> |
| Cc: Jiri Olsa <jolsa@redhat.com> |
| Cc: Mark Rutland <mark.rutland@arm.com> |
| Cc: Peter Zijlstra <peterz@infradead.org> |
| Cc: Zhen Lei <thunder.leizhen@huawei.com> |
| Link: http://lore.kernel.org/lkml/20210716141122.858082-1-rickyman7@gmail.com |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/perf/util/data.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/tools/perf/util/data.c b/tools/perf/util/data.c |
| index 8fca4779ae6a..70b91ce35178 100644 |
| --- a/tools/perf/util/data.c |
| +++ b/tools/perf/util/data.c |
| @@ -20,7 +20,7 @@ |
| |
| static void close_dir(struct perf_data_file *files, int nr) |
| { |
| - while (--nr >= 1) { |
| + while (--nr >= 0) { |
| close(files[nr].fd); |
| zfree(&files[nr].path); |
| } |
| -- |
| 2.30.2 |
| |