Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'perf_urgent_for_v6.16_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull perf fix from Borislav Petkov:

- Make sure an AUX perf event is really disabled when it overruns

* tag 'perf_urgent_for_v6.16_rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
perf/aux: Fix pending disable flow when the AUX ring buffer overruns

+5 -5
+3 -3
kernel/events/core.c
··· 7251 7251 * CPU-A CPU-B 7252 7252 * 7253 7253 * perf_event_disable_inatomic() 7254 - * @pending_disable = CPU-A; 7254 + * @pending_disable = 1; 7255 7255 * irq_work_queue(); 7256 7256 * 7257 7257 * sched-out 7258 - * @pending_disable = -1; 7258 + * @pending_disable = 0; 7259 7259 * 7260 7260 * sched-in 7261 7261 * perf_event_disable_inatomic() 7262 - * @pending_disable = CPU-B; 7262 + * @pending_disable = 1; 7263 7263 * irq_work_queue(); // FAILS 7264 7264 * 7265 7265 * irq_work_run()
+2 -2
kernel/events/ring_buffer.c
··· 441 441 * store that will be enabled on successful return 442 442 */ 443 443 if (!handle->size) { /* A, matches D */ 444 - event->pending_disable = smp_processor_id(); 444 + perf_event_disable_inatomic(handle->event); 445 445 perf_output_wakeup(handle); 446 446 WRITE_ONCE(rb->aux_nest, 0); 447 447 goto err_put; ··· 526 526 527 527 if (wakeup) { 528 528 if (handle->aux_flags & PERF_AUX_FLAG_TRUNCATED) 529 - handle->event->pending_disable = smp_processor_id(); 529 + perf_event_disable_inatomic(handle->event); 530 530 perf_output_wakeup(handle); 531 531 } 532 532