CVE-2026-97961: perf/core: Allow list_del during perf_event_overflow()

Published Sep 25, 2026
·
Updated

In the Linux kernel, the following vulnerability has been resolved:

perf/core: Allow listdel during perfeventoverflow()

A PMU might use perfschedcbinc() and perfschedcbdec() interface to get the PMU call back function pmu::schedtask invoked at schedule in and schedule out. This is achieved by walking along the list anchored by schedcblist.

The following scenario might lead to a list corruption.

perfpmuschedtask() foreachlistentry(..., &schedcblist) +--> perfpmuschedtask() +--> event->pmu->schedtask()) +--> PMUpushsample() +--> perfeventoverflow() +--> perfeventoverflow() +--> pmu->stop() +--> perfschedcbdec() remove entry from schedcblist while list node in use.

This happens when ioctl(fd, PERFEVENTIOCREFRESH, xxx) has been invoked and perfevent::eventlimit hits zero.

Prevent the list corruption and convert foreachlistentry() to foreachlistentrysafe().

Affected Software

1 affected component
Linux Linux kernel

Event History

Sep 25, 2026
CVE Published
via MITRE·10:23 AM
Data Sourced
via MITRE·10:23 AM
Description
Data Sourced
via NVD·11:17 AM
Description

Frequently Asked Questions

1

What conditions are required to trigger the list corruption?

A PMU must use the perf_sched_cb_inc() and perf_sched_cb_dec() callback interface, and its sched_task callback must reach perf_event_overflow(). The problematic path occurs when PERF_EVENT_IOC_REFRESH has been invoked and the event_limit reaches zero, causing pmu->stop() to remove an entry from sched_cb_list while that list is being traversed.

2

What is the practical effect of the flaw?

The affected scheduling callback list can be corrupted when an entry is removed during traversal. The provided information does not state a confirmed impact beyond list corruption.

3

How is the issue fixed?

The list traversal in perf_pmu_sched_task() is changed from for_each_list_entry() to for_each_list_entry_safe(), allowing an entry to be removed safely while the list is in use.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203