|
@@ -6628,10 +6628,7 @@ static int __perf_event_overflow(struct perf_event *event,
|
|
irq_work_queue(&event->pending);
|
|
irq_work_queue(&event->pending);
|
|
}
|
|
}
|
|
|
|
|
|
- if (event->overflow_handler)
|
|
|
|
- event->overflow_handler(event, data, regs);
|
|
|
|
- else
|
|
|
|
- perf_event_output(event, data, regs);
|
|
|
|
|
|
+ event->overflow_handler(event, data, regs);
|
|
|
|
|
|
if (*perf_event_fasync(event) && event->pending_kill) {
|
|
if (*perf_event_fasync(event) && event->pending_kill) {
|
|
event->pending_wakeup = 1;
|
|
event->pending_wakeup = 1;
|
|
@@ -8152,8 +8149,13 @@ perf_event_alloc(struct perf_event_attr *attr, int cpu,
|
|
context = parent_event->overflow_handler_context;
|
|
context = parent_event->overflow_handler_context;
|
|
}
|
|
}
|
|
|
|
|
|
- event->overflow_handler = overflow_handler;
|
|
|
|
- event->overflow_handler_context = context;
|
|
|
|
|
|
+ if (overflow_handler) {
|
|
|
|
+ event->overflow_handler = overflow_handler;
|
|
|
|
+ event->overflow_handler_context = context;
|
|
|
|
+ } else {
|
|
|
|
+ event->overflow_handler = perf_event_output;
|
|
|
|
+ event->overflow_handler_context = NULL;
|
|
|
|
+ }
|
|
|
|
|
|
perf_event__state_init(event);
|
|
perf_event__state_init(event);
|
|
|
|
|