diff options
| author | Riccardo Mancini <rickyman7@gmail.com> | 2021-07-15 18:07:19 +0200 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-07-28 09:14:27 +0200 |
| commit | d2bdf75a2ec9835f7621a590a7b82c7b6524df7e (patch) | |
| tree | 16aa1619236e8e5ae4bc0c2cf74feaf6669ed23e /tools | |
| parent | bd1a41061bc766b6f9e8ddb4be81fef7f7f4dfe0 (diff) | |
| download | linux-d2bdf75a2ec9835f7621a590a7b82c7b6524df7e.tar.gz linux-d2bdf75a2ec9835f7621a590a7b82c7b6524df7e.tar.bz2 linux-d2bdf75a2ec9835f7621a590a7b82c7b6524df7e.zip | |
perf lzma: Close lzma stream on exit
[ Upstream commit f8cbb0f926ae1e1fb5f9e51614e5437560ed4039 ]
ASan reports memory leaks when running:
# perf test "88: Check open filename arg using perf trace + vfs_getname"
One of these is caused by the lzma stream never being closed inside
lzma_decompress_to_file().
This patch adds the missing lzma_end().
Signed-off-by: Riccardo Mancini <rickyman7@gmail.com>
Fixes: 80a32e5b498a7547 ("perf tools: Add lzma decompression support for kernel module")
Cc: Ian Rogers <irogers@google.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/aaf50bdce7afe996cfc06e1bbb36e4a2a9b9db93.1626343282.git.rickyman7@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/perf/util/lzma.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/tools/perf/util/lzma.c b/tools/perf/util/lzma.c index 9ddea5cecd94..ba12643d2ded 100644 --- a/tools/perf/util/lzma.c +++ b/tools/perf/util/lzma.c @@ -61,7 +61,7 @@ int lzma_decompress_to_file(const char *input, int output_fd) if (ferror(infile)) { pr_err("lzma: read error: %s\n", strerror(errno)); - goto err_fclose; + goto err_lzma_end; } if (feof(infile)) @@ -75,7 +75,7 @@ int lzma_decompress_to_file(const char *input, int output_fd) if (writen(output_fd, buf_out, write_size) != write_size) { pr_err("lzma: write error: %s\n", strerror(errno)); - goto err_fclose; + goto err_lzma_end; } strm.next_out = buf_out; @@ -87,11 +87,13 @@ int lzma_decompress_to_file(const char *input, int output_fd) break; pr_err("lzma: failed %s\n", lzma_strerror(ret)); - goto err_fclose; + goto err_lzma_end; } } err = 0; +err_lzma_end: + lzma_end(&strm); err_fclose: fclose(infile); return err; |
