]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
perf c2c: Fix hist entry and format list leaks in c2c_he_free()
authorArnaldo Carvalho de Melo <acme@redhat.com>
Sat, 13 Jun 2026 18:16:42 +0000 (15:16 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Wed, 17 Jun 2026 12:21:03 +0000 (09:21 -0300)
commitfe68cf349fb343c0a7cb6c4fe6c3de4f4afe8d1c
tree0cd808612688f08e2119f6870d5e237c1fe603e8
parent61a21d11afd8dd83b2260ae00541bed62a843219
perf c2c: Fix hist entry and format list leaks in c2c_he_free()

c2c_he_free() calls hists__delete_entries() which only walks the
output-sorted entries tree.  During c2c resort, when cacheline entries
are merged and the redundant entry is freed, the inner hists have not
been output-resorted yet, so hists->entries is empty.  The actual inner
hist_entry objects live in entries_in_array[] and entries_collapsed,
which are never walked, leaking all inner hist_entry objects for every
merged cacheline.

Additionally, the dynamically allocated format entries on hists->list
are never unregistered or freed.

Fix both issues by switching to hists__delete_all_entries() which walks
all rb_root trees, and calling perf_hpp__reset_output_field() to clean
up format entries.

Fixes: bf0e0d407ea09ce5 ("perf c2c report: Add sample processing")
Reported-by: sashiko-bot <sashiko-bot@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Assisted-by: Claude:claude-opus-4.6
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-c2c.c
tools/perf/util/hist.c
tools/perf/util/hist.h