From: Masami Hiramatsu (Google) <[email protected]> Instead of checking whether event->overflow_handler everytime in is_default_overflow_handler(), just use a flag to check it once when registering the handler.
Signed-off-by: Masami Hiramatsu (Google) <[email protected]> --- include/linux/perf_event.h | 9 ++------- kernel/events/core.c | 2 ++ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index fd1d91017b99..40dd897e26b0 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -902,6 +902,7 @@ struct perf_event { u64 (*clock)(void); perf_overflow_handler_t overflow_handler; void *overflow_handler_context; + bool default_overflow_compatible; struct bpf_prog *prog; u64 bpf_cookie; @@ -1505,13 +1506,7 @@ extern int perf_event_output(struct perf_event *event, static inline bool is_default_overflow_handler(struct perf_event *event) { - perf_overflow_handler_t overflow_handler = event->overflow_handler; - - if (likely(overflow_handler == perf_event_output_forward)) - return true; - if (unlikely(overflow_handler == perf_event_output_backward)) - return true; - return false; + return event->default_overflow_compatible; } extern void diff --git a/kernel/events/core.c b/kernel/events/core.c index 177e57c1a362..6bbbde82cb21 100644 --- a/kernel/events/core.c +++ b/kernel/events/core.c @@ -12946,9 +12946,11 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu, } else if (is_write_backward(event)){ event->overflow_handler = perf_event_output_backward; event->overflow_handler_context = NULL; + event->default_overflow_compatible = true; } else { event->overflow_handler = perf_event_output_forward; event->overflow_handler_context = NULL; + event->default_overflow_compatible = true; } perf_event__state_init(event);
