From: Arnaldo Carvalho de Melo Date: Sat, 6 Jun 2026 14:19:10 +0000 (-0300) Subject: perf c2c: Fix use-after-free in he__get_c2c_hists() error path X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=5e5e6196d737c5be03d20647428316b36621608d;p=thirdparty%2Fkernel%2Flinux.git perf c2c: Fix use-after-free in he__get_c2c_hists() error path he__get_c2c_hists() assigns c2c_he->hists before calling c2c_hists__init(). If init fails, the error path calls free(hists) but leaves c2c_he->hists pointing to freed memory. On teardown, c2c_he_free() finds the non-NULL pointer and calls hists__delete_entries() on it, causing a use-after-free. Set c2c_he->hists to NULL before freeing so teardown skips the already-freed allocation. Fixes: b2252ae67b687d2b ("perf c2c report: Decode c2c_stats for hist entries") Reported-by: sashiko-bot Cc: Jiri Olsa Assisted-by: Claude:claude-opus-4.6 Signed-off-by: Arnaldo Carvalho de Melo --- diff --git a/tools/perf/builtin-c2c.c b/tools/perf/builtin-c2c.c index cfc1ebe8c0af7..e205f58b2f3d3 100644 --- a/tools/perf/builtin-c2c.c +++ b/tools/perf/builtin-c2c.c @@ -225,6 +225,7 @@ he__get_c2c_hists(struct hist_entry *he, ret = c2c_hists__init(hists, sort, nr_header_lines, env); if (ret) { + c2c_he->hists = NULL; free(hists); return NULL; }