From: Peter Zijlstra Date: Mon, 4 Nov 2024 13:39:22 +0000 (+0100) Subject: perf/bpf: Robustify perf_event_free_bpf_prog() X-Git-Tag: v6.15-rc1~217^2~25 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c5b96789575b670b1e776071bb243e0ed3d3abaa;p=thirdparty%2Fkernel%2Flinux.git perf/bpf: Robustify perf_event_free_bpf_prog() Ensure perf_event_free_bpf_prog() is safe to call a second time; notably without making any references to event->pmu when there is no prog left. Note: perf_event_detach_bpf_prog() might leave a stale event->prog Signed-off-by: Peter Zijlstra (Intel) Signed-off-by: Ingo Molnar Reviewed-by: Ravi Bangoria Cc: Alexei Starovoitov Cc: Daniel Borkmann Cc: Andrii Nakryiko Link: https://lore.kernel.org/r/20241104135518.978956692@infradead.org --- diff --git a/kernel/events/core.c b/kernel/events/core.c index 525c64ee7925b..ab4e497087daf 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -10905,6 +10905,9 @@ int perf_event_set_bpf_prog(struct perf_event *event, struct bpf_prog *prog, void perf_event_free_bpf_prog(struct perf_event *event) { + if (!event->prog) + return; + if (!perf_event_is_tracing(event)) { perf_event_free_bpf_handler(event); return;