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: io_uring-6.15-20250403~139^2~25 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=c5b96789575b670b1e776071bb243e0ed3d3abaa;p=linux-block.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 525c64ee7925..ab4e497087da 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;