mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-06 16:49:22 +00:00
perf lzma: Close lzma stream on exit
[ Upstream commitf8cbb0f926
] 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:80a32e5b49
("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>
This commit is contained in:
parent
f40a49b38e
commit
262c9de28f
1 changed files with 5 additions and 3 deletions
|
@ -64,7 +64,7 @@ int lzma_decompress_to_file(const char *input, int output_fd)
|
||||||
|
|
||||||
if (ferror(infile)) {
|
if (ferror(infile)) {
|
||||||
pr_err("lzma: read error: %s\n", strerror(errno));
|
pr_err("lzma: read error: %s\n", strerror(errno));
|
||||||
goto err_fclose;
|
goto err_lzma_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (feof(infile))
|
if (feof(infile))
|
||||||
|
@ -78,7 +78,7 @@ int lzma_decompress_to_file(const char *input, int output_fd)
|
||||||
|
|
||||||
if (writen(output_fd, buf_out, write_size) != write_size) {
|
if (writen(output_fd, buf_out, write_size) != write_size) {
|
||||||
pr_err("lzma: write error: %s\n", strerror(errno));
|
pr_err("lzma: write error: %s\n", strerror(errno));
|
||||||
goto err_fclose;
|
goto err_lzma_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
strm.next_out = buf_out;
|
strm.next_out = buf_out;
|
||||||
|
@ -90,11 +90,13 @@ int lzma_decompress_to_file(const char *input, int output_fd)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
pr_err("lzma: failed %s\n", lzma_strerror(ret));
|
pr_err("lzma: failed %s\n", lzma_strerror(ret));
|
||||||
goto err_fclose;
|
goto err_lzma_end;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
err = 0;
|
err = 0;
|
||||||
|
err_lzma_end:
|
||||||
|
lzma_end(&strm);
|
||||||
err_fclose:
|
err_fclose:
|
||||||
fclose(infile);
|
fclose(infile);
|
||||||
return err;
|
return err;
|
||||||
|
|
Loading…
Reference in a new issue