From: Arnaldo Carvalho de Melo Date: Mon, 8 Jun 2026 11:12:04 +0000 (-0300) Subject: perf bpf: Fix metadata leak in perf_env__add_bpf_info() on duplicate insert X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=a0e4362a3e7b592f1d58949ffe3d6decad39a17c;p=thirdparty%2Fkernel%2Flinux.git perf bpf: Fix metadata leak in perf_env__add_bpf_info() on duplicate insert When perf_env__insert_bpf_prog_info() returns false (duplicate program), the error path frees info_linear and info_node but not info_node->metadata. If bpf_metadata_create() had succeeded, the metadata allocation is permanently leaked. Fix by calling bpf_metadata_free() on info_node->metadata before freeing info_node. bpf_metadata_free() handles NULL, so this is safe even when bpf_metadata_create() returned NULL. Reported-by: sashiko-bot Fixes: fdc3441f2d317b40 ("perf record: collect BPF metadata from new programs") Cc: Blake Jones Assisted-by: Claude:claude-opus-4.6 Signed-off-by: Arnaldo Carvalho de Melo --- diff --git a/tools/perf/util/bpf-event.c b/tools/perf/util/bpf-event.c index b65ad28cd950f..c4594969d7677 100644 --- a/tools/perf/util/bpf-event.c +++ b/tools/perf/util/bpf-event.c @@ -873,6 +873,7 @@ static int perf_env__add_bpf_info(struct perf_env *env, u32 id) if (!perf_env__insert_bpf_prog_info(env, info_node)) { pr_debug("%s: duplicate add bpf info request for id %u\n", __func__, btf_id); + bpf_metadata_free(info_node->metadata); free(info_linear); free(info_node); goto out;