perf/bpf: Call BPF handler directly, not through overflow machinery
authorKyle Huey <me@kylehuey.com>
Fri, 12 Apr 2024 01:50:16 +0000 (18:50 -0700)
committerIngo Molnar <mingo@kernel.org>
Fri, 12 Apr 2024 09:49:49 +0000 (11:49 +0200)
commitf11f10bfa1ca23b32020b2073aa13131a27978fe
tree1657fdb40278f77e27436ee5a56855a9983873c9
parent14e40a9578b70cc5323e55f61292a7e021f6037c
perf/bpf: Call BPF handler directly, not through overflow machinery

To ultimately allow BPF programs attached to perf events to completely
suppress all of the effects of a perf event overflow (rather than just the
sample output, as they do today), call bpf_overflow_handler() from
__perf_event_overflow() directly rather than modifying struct perf_event's
overflow_handler. Return the BPF program's return value from
bpf_overflow_handler() so that __perf_event_overflow() knows how to
proceed. Remove the now unnecessary orig_overflow_handler from struct
perf_event.

This patch is solely a refactoring and results in no behavior change.

Suggested-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Kyle Huey <khuey@kylehuey.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Song Liu <song@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
Acked-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/r/20240412015019.7060-5-khuey@kylehuey.com
include/linux/perf_event.h
kernel/events/core.c