From: Ian Rogers irogers@google.com
[ Upstream commit c7ba9d18ae47924a6ea6a47ca139779f58eb83c0 ]
The child_process for addr2line sets in and out to -1 so that pipes get created. It is the caller's responsibility to close the pipes, finish_command doesn't do it. Add the missed closes.
Fixes: b3801e791231 ("perf srcline: Simplify addr2line subprocess") Signed-off-by: Ian Rogers irogers@google.com Cc: Ravi Bangoria ravi.bangoria@amd.com Cc: James Clark james.clark@arm.com Cc: Nick Desaulniers ndesaulniers@google.com Cc: Nathan Chancellor nathan@kernel.org Cc: Kan Liang kan.liang@linux.intel.com Cc: John Garry john.g.garry@oracle.com Cc: Tom Rix trix@redhat.com Cc: llvm@lists.linux.dev Signed-off-by: Namhyung Kim namhyung@kernel.org Link: https://lore.kernel.org/r/20240201001504.1348511-8-irogers@google.com Signed-off-by: Sasha Levin sashal@kernel.org --- tools/perf/util/srcline.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c index 034b496df2978..7addc34afcf5d 100644 --- a/tools/perf/util/srcline.c +++ b/tools/perf/util/srcline.c @@ -399,6 +399,8 @@ static void addr2line_subprocess_cleanup(struct child_process *a2l) kill(a2l->pid, SIGKILL); finish_command(a2l); /* ignore result, we don't care */ a2l->pid = -1; + close(a2l->in); + close(a2l->out); }
free(a2l);