From: Arnaldo Carvalho de Melo Date: Mon, 8 Jun 2026 11:11:28 +0000 (-0300) Subject: perf bpf: Fix map data leak in bpf_metadata_create() on alloc failure X-Git-Url: http://git.ipfire.org/index.cgi?a=commitdiff_plain;h=aece2b8966fc8de5be46ee9287d0f60d6690c300;p=thirdparty%2Fkernel%2Flinux.git perf bpf: Fix map data leak in bpf_metadata_create() on alloc failure bpf_metadata_create() calls bpf_metadata_read_map_data() which allocates map.btf and map.rodata. If the subsequent bpf_metadata_alloc() fails, the code does 'continue' which skips bpf_metadata_free_map_data(), permanently leaking both allocations. Fix by calling bpf_metadata_free_map_data() before continue. Reported-by: sashiko-bot Fixes: ab38e84ba9a80581 ("perf record: collect BPF metadata from existing BPF 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 fe01551dc3e6c..b65ad28cd950f 100644 --- a/tools/perf/util/bpf-event.c +++ b/tools/perf/util/bpf-event.c @@ -395,8 +395,10 @@ static struct bpf_metadata *bpf_metadata_create(struct bpf_prog_info *info) continue; metadata = bpf_metadata_alloc(info->nr_prog_tags, map.num_vars); - if (!metadata) + if (!metadata) { + bpf_metadata_free_map_data(&map); continue; + } bpf_metadata_fill_event(&map, &metadata->event->bpf_metadata);