mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-01 10:45:49 +00:00
perf probe: Fix libdw memory leak
Add missing dwarf_cfi_end to free memory associated with probe_finder
cfi_eh which is allocated and owned via a call to
dwarf_getcfi_elf. Confusingly cfi_dbg shouldn't be freed as its memory
is owned by the passed in debuginfo struct. Add comments to highlight
this.
This addresses leak sanitizer issues seen in:
tools/perf/tests/shell/test_uprobe_from_different_cu.sh
Fixes: 270bde1e76
("perf probe: Search both .eh_frame and .debug_frame sections for probe location")
Signed-off-by: Ian Rogers <irogers@google.com>
Cc: David S. Miller <davem@davemloft.net>
Cc: Steinar H. Gunderson <sesse@google.com>
Cc: Alexander Lobakin <aleksander.lobakin@intel.com>
Cc: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Cc: Kajol Jain <kjain@linux.ibm.com>
Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
Link: https://lore.kernel.org/r/20241016235622.52166-3-irogers@google.com
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
This commit is contained in:
parent
1280f012e0
commit
4585038b8e
@ -1379,6 +1379,10 @@ 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);
|
||||
#endif
|
||||
|
||||
if (ret < 0 || tf.ntevs == 0) {
|
||||
for (i = 0; i < tf.ntevs; i++)
|
||||
clear_probe_trace_event(&tf.tevs[i]);
|
||||
|
@ -64,9 +64,9 @@ struct probe_finder {
|
||||
|
||||
/* For variable searching */
|
||||
#if _ELFUTILS_PREREQ(0, 142)
|
||||
/* Call Frame Information from .eh_frame */
|
||||
/* Call Frame Information from .eh_frame. Owned by this struct. */
|
||||
Dwarf_CFI *cfi_eh;
|
||||
/* Call Frame Information from .debug_frame */
|
||||
/* Call Frame Information from .debug_frame. Not owned. */
|
||||
Dwarf_CFI *cfi_dbg;
|
||||
#endif
|
||||
Dwarf_Op *fb_ops; /* Frame base attribute */
|
||||
|
Loading…
Reference in New Issue
Block a user