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

perf/x86/intel: Prevent drain_pebs() reentry

The PEBS buffer is shared by all events on a CPU, so drain_pebs() must
not be reentered. If so, one instance may observe stale buffer state and
potentially access out-of-bound memory.

Most invocations happen in NMI context, which naturally prevents reentry.
However, drain_pebs() is also reachable from process context via
intel_pmu_drain_pebs_buffer().

In those paths, the PMU is often already disabled, but not guaranteed.
For example, __intel_pmu_pebs_disable() only disables the target counter,
so other active counters can still raise a PMI and interrupt an in-flight
drain_pebs(). Here is an example,

__perf_addr_filters_adjust()
perf_event_stop()
__perf_event_stop()
x86_pmu_stop() (event->pmu->stop)
intel_pmu_disable_event()
intel_pmu_pebs_disable()
__intel_pmu_pebs_disable()
intel_pmu_drain_large_pebs()
intel_pmu_drain_pebs_buffer()

Introduce __intel_pmu_quiesce() and __intel_pmu_resume() helpers and
use them in intel_pmu_drain_large_pebs() to disable the full PMU
around the intel_pmu_drain_pebs_buffer() call, preventing reentry.

Also add a warning in intel_pmu_drain_pebs_buffer() when the full PMU is
not disabled.
Published: 2026-09-25
Score: n/a
EPSS: n/a
KEV: No
Impact: Potential out‑of‑bounds memory access in kernel leading to crash or information disclosure
Action: Apply Patch
AI Analysis

Impact

The vulnerability is a reentrancy flaw in the Linux kernel’s PEBS drain function. When drain_pebs() is reentered, stale buffer state can cause the kernel to read or write memory outside the bounds of the PEBS buffer. This can corrupt kernel data, trigger a crash, or potentially expose kernel memory contents to user space, which could be leveraged for information disclosure or arbitrary code execution.

Affected Systems

Affected systems are all Linux kernel builds that support Intel PEBS on x86 CPUs. The flaw was introduced in the generic perf/x86 Intel PMU code and is present in any kernel version that has not applied the fix found in the commit referenced in the advisory. No specific version list was released, so any kernel earlier than the patch is vulnerable.

Risk and Exploitability

The risk is high because the flaw can be triggered from running applications that enable PEBS or generate PMI events. The EPSS score is not available and the vulnerability is not listed in the CISA KEV catalog, but the impact of an out‑of‑bounds access in the kernel gives it potential severity. Exploitation would require the attacker to induce a concurrent PEBS drain while a PMI event occurs, which is technically complex but not impossible on systems with active PMU usage. Administrators should treat this as a high‑priority patch issue.

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

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the latest Linux kernel patch that fixes the reentrancy in intel_pmu_drain_pebs_buffer.
  • If the patch is not immediately available, upgrade to a kernel version released after the fix or check the vendor’s security advisory for a backport.
  • Disable Intel PEBS if your workloads do not require it by setting the appropriate kernel parameter or using the BIOS/firmware setting that disables the PMU.
  • Monitor system logs for kernel crash messages or abnormal perf‑related events.

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

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 25 Sep 2026 18:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-788

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/x86/intel: Prevent drain_pebs() reentry The PEBS buffer is shared by all events on a CPU, so drain_pebs() must not be reentered. If so, one instance may observe stale buffer state and potentially access out-of-bound memory. Most invocations happen in NMI context, which naturally prevents reentry. However, drain_pebs() is also reachable from process context via intel_pmu_drain_pebs_buffer(). In those paths, the PMU is often already disabled, but not guaranteed. For example, __intel_pmu_pebs_disable() only disables the target counter, so other active counters can still raise a PMI and interrupt an in-flight drain_pebs(). Here is an example, __perf_addr_filters_adjust() perf_event_stop() __perf_event_stop() x86_pmu_stop() (event->pmu->stop) intel_pmu_disable_event() intel_pmu_pebs_disable() __intel_pmu_pebs_disable() intel_pmu_drain_large_pebs() intel_pmu_drain_pebs_buffer() Introduce __intel_pmu_quiesce() and __intel_pmu_resume() helpers and use them in intel_pmu_drain_large_pebs() to disable the full PMU around the intel_pmu_drain_pebs_buffer() call, preventing reentry. Also add a warning in intel_pmu_drain_pebs_buffer() when the full PMU is not disabled.
Title perf/x86/intel: Prevent drain_pebs() reentry
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:04.943Z

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

Link: CVE-2026-97960

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

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

Link: CVE-2026-97960

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-25T18:00:20Z

Weaknesses
  • CWE-362

    Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')

  • CWE-788

    Access of Memory Location After End of Buffer