CVE-2026-97960

perf/x86/intel: Prevent drain_pebs() reentry

State
Published
Severity
Not scored
Published
Sep 25, 2026
Updated
Oct 21, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

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.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • b752ea0c28e3f7f0aaaad6abf84f735eebc37a60 to before 9882068ed242fcd4743f53027e8c790e88dcafffAffected
  • b752ea0c28e3f7f0aaaad6abf84f735eebc37a60 to before 999e482fdf89400cc1ae937680fc05096b4c915bAffected
  • b752ea0c28e3f7f0aaaad6abf84f735eebc37a60 to before a5fe19dd8b3ed5fad6e5e0f0c58c7245043ee4afAffected
  • b752ea0c28e3f7f0aaaad6abf84f735eebc37a60 to before c55599c0ec2aa020e41a0599c3044c56d8a2e7d9Affected
  • b752ea0c28e3f7f0aaaad6abf84f735eebc37a60 to before a56c03a397e2cd0c4cf8da96dcd6214f7d0e7d8cAffected
  • a9165207b2b07415eeb01b3ac8bb84976ec96984Affected
  • 6.3.7 to before 6.4Affected
LinuxLinux
  • 6.4Affected
  • before 6.4Not affected
  • 6.6.160 through 6.6.*Not affected
  • 6.12.114 through 6.12.*Not affected
  • 6.18.53 through 6.18.*Not affected
  • 7.2.7 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.