Re: [PATCH v1 2/3] perf probe: Fix libdw memory leak

From: James Clark
Date: Tue Sep 24 2024 - 05:17:24 EST




On 24/09/2024 1:37 am, Ian Rogers wrote:
Add missing dwarf_cfi_end to free memory associated with probe_finder
cfi_eh or cfi_dbg. This addresses leak sanitizer issues seen in:
tools/perf/tests/shell/test_uprobe_from_different_cu.sh

Fixes: 270bde1e76f4 ("perf probe: Search both .eh_frame and .debug_frame sections for probe location")
Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>
---
tools/perf/util/probe-finder.c | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/tools/perf/util/probe-finder.c b/tools/perf/util/probe-finder.c
index 630e16c54ed5..78f34fa0c391 100644
--- a/tools/perf/util/probe-finder.c
+++ b/tools/perf/util/probe-finder.c
@@ -1379,6 +1379,11 @@ int debuginfo__find_trace_events(struct debuginfo *dbg,
if (ret >= 0 && tf.pf.skip_empty_arg)
ret = fill_empty_trace_arg(pev, tf.tevs, tf.ntevs);
+#if _ELFUTILS_PREREQ(0, 142)
+ dwarf_cfi_end(tf.pf.cfi_eh);
+ dwarf_cfi_end(tf.pf.cfi_dbg);
+#endif
+

I noticed that c06547d converted an _ELFUTILS_PREREQ(0, 142) into HAVE_DWARF_CFI_SUPPORT. But there is still a mixture of both in the code (unrelated to this patch). The commit message doesn't say why it is better, just that it could be changed, so I'm not sure which one is right.