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

perf/core: Allow list_del during perf_event_overflow()

A PMU might use perf_sched_cb_inc() and perf_sched_cb_dec()
interface to get the PMU call back function pmu::sched_task
invoked at schedule in and schedule out. This is achieved
by walking along the list anchored by sched_cb_list.

The following scenario might lead to a list corruption.

perf_pmu_sched_task()
for_each_list_entry(..., &sched_cb_list)
+--> __perf_pmu_sched_task()
+--> event->pmu->sched_task())
+--> PMU_push_sample()
+--> perf_event_overflow()
+--> __perf_event_overflow()
+--> pmu->stop()
+--> perf_sched_cb_dec()
remove entry from sched_cb_list
while list node in use.

This happens when ioctl(fd, PERF_EVENT_IOC_REFRESH, xxx) has been
invoked and perf_event::event_limit hits zero.

Prevent the list corruption and convert for_each_list_entry()
to for_each_list_entry_safe().
Published: 2026-09-25
Score: n/a
EPSS: n/a
KEV: No
Impact: Kernel Data Corruption
Action: Apply Patch
AI Analysis

Impact

A flaw in the Linux kernel’s perf subsystem allows a node to be removed from the sched_cb_list while the list is still being traversed. This occurs when an ioctl() of type PERF_EVENT_IOC_REFRESH triggers perf_event_overflow(), which leads to pmu->stop() removing an entry from the list during an active iteration. The result is corruption of kernel data structures, potentially causing a crash or other unstable behavior. The patch replaces the unsafe for_each_list_entry with for_each_list_entry_safe to prevent the corruption.

Affected Systems

This vulnerability applies to all Linux kernel builds that contain the unpatched perf/core implementation, including mainstream distributions prior to the commit 59e63416f5 and any custom kernels that have not integrated the fix.

Risk and Exploitability

The CVSS score is unavailable, EPSS is not reported, and the vulnerability is not listed in the CISA KEV catalog. An attacker would need local access to open a perf event and trigger the ioctl() sequence. The described list corruption could lead to kernel memory corruption or a crash, and while arbitrary code execution is not explicitly stated in the description, such an outcome is conceivable. The exploitation vector is therefore local, with risk moderate unless mitigated.

Generated by OpenCVE AI on September 25, 2026 at 19:25 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply a kernel update that includes commit 59e63416f5 to replace the unsafe list traversal with a safe iteration method.
  • Restrict or audit use of PERF_EVENT_IOC_REFRESH; limit its execution to trusted processes or disable it if not required.
  • Enable kernel lockdep or other integrity checks, and monitor system logs for abnormal behavior in the perf subsystem to detect potential corruption.

Generated by OpenCVE AI on September 25, 2026 at 19:25 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 25 Sep 2026 19:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-416

Fri, 25 Sep 2026 10:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: perf/core: Allow list_del during perf_event_overflow() A PMU might use perf_sched_cb_inc() and perf_sched_cb_dec() interface to get the PMU call back function pmu::sched_task invoked at schedule in and schedule out. This is achieved by walking along the list anchored by sched_cb_list. The following scenario might lead to a list corruption. perf_pmu_sched_task() for_each_list_entry(..., &sched_cb_list) +--> __perf_pmu_sched_task() +--> event->pmu->sched_task()) +--> PMU_push_sample() +--> perf_event_overflow() +--> __perf_event_overflow() +--> pmu->stop() +--> perf_sched_cb_dec() remove entry from sched_cb_list while list node in use. This happens when ioctl(fd, PERF_EVENT_IOC_REFRESH, xxx) has been invoked and perf_event::event_limit hits zero. Prevent the list corruption and convert for_each_list_entry() to for_each_list_entry_safe().
Title perf/core: Allow list_del during perf_event_overflow()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-25T10:23:05.547Z

Reserved: 2026-09-25T10:18:58.206Z

Link: CVE-2026-97961

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-25T11:17:23.860

Modified: 2026-09-25T11:17:23.860

Link: CVE-2026-97961

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-25T19:30:20Z

Weaknesses