CVE-2025-38055

perf/x86/intel: Fix segfault with PEBS-via-PT with sample_freq

MEDIUM
5.5
CVSS Score
Published: June 18, 2025 at 09:33 AM UTC
Updated: June 17, 2026 at 09:15 AM UTC
1 product affected across 1 vendorLinux Kernel

Using Linux by Linux?

Get instant alerts when new vulnerabilities affect Linux - before attackers find them.

Real-time alertsTrack your software stackFree plan available
Severity
MEDIUM5.5
Exploit prediction
EPSS 0.2%

Description

In the Linux kernel, the following vulnerability has been resolved: perf/x86/intel: Fix segfault with PEBS-via-PT with sample_freq Currently, using PEBS-via-PT with a sample frequency instead of a sample period, causes a segfault. For example: BUG: kernel NULL pointer dereference, address: 0000000000000195 <NMI> ? __die_body.cold+0x19/0x27 ? page_fault_oops+0xca/0x290 ? exc_page_fault+0x7e/0x1b0 ? asm_exc_page_fault+0x26/0x30 ? intel_pmu_pebs_event_update_no_drain+0x40/0x60 ? intel_pmu_pebs_event_update_no_drain+0x32/0x60 intel_pmu_drain_pebs_icl+0x333/0x350 handle_pmi_common+0x272/0x3c0 intel_pmu_handle_irq+0x10a/0x2e0 perf_event_nmi_handler+0x2a/0x50 That happens because intel_pmu_pebs_event_update_no_drain() assumes all the pebs_enabled bits represent counter indexes, which is not always the case. In this particular case, bits 60 and 61 are set for PEBS-via-PT purposes. The behaviour of PEBS-via-PT with sample frequency is questionable because although a PMI is generated (PEBS_PMI_AFTER_EACH_RECORD), the period is not adjusted anyway. Putting that aside, fix intel_pmu_pebs_event_update_no_drain() by passing the mask of counter bits instead of 'size'. Note, prior to the Fixes commit, 'size' would be limited to the maximum counter index, so the issue was not hit.

Affected

Our own answer: ranges merged, affected separated from platform-only, with confidence and review flags.

v ≥ 6.10.56.10.5 ≤ v < 6.116.10.5 ≤ v < 6.12.316.11 ≤ v < 6.12.316.11 ≤ v < 6.14.96.11 ≤ v < 6.156.13 ≤ v < 6.14.96.10.56.116.15 rc16.15 rc26.15 rc36.15 rc46.15 rc56.15 rc6722e42e45c2f1c6d1adec7813651dba5139f52f4a9d6d466bcf0621a872e1052bc40e4c6f0541b8d
Vendor states this is fixed in 0b1874a5b1173fbcb2185ab828f4c33d067e551e (fixed)
Vendor states this is fixed in 99bcd91fabada0dbb1d5f0de44532d8008db93c6 (fixed)
Vendor states this is fixed in ca51db23166767a8445deb8331c9b8d5205d9287 (fixed)
Vendor states this is fixed in 6.11 (unaffected)
Vendor states this is fixed in 6.12.31 (unaffected)
Vendor states this is fixed in 6.14.9 (unaffected)
Vendor states this is fixed in 6.15 (unaffected)

References (3)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/0b1874a5b1173fbcb2185ab828f4c33d067e551e
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/99bcd91fabada0dbb1d5f0de44532d8008db93c6
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/ca51db23166767a8445deb8331c9b8d5205d9287

CVSS

Attack Vector
LOCAL
Complexity
LOW
Privileges
LOW
User Interaction
NONE
Scope
UNCHANGED
Confidentiality
NONE
Integrity
NONE
Availability
HIGH
Vector?

Quick Info

StatusANALYZED
CWE
CWE-476

Get alerted

Stop reading CVE feeds looking for your own stack

Track the products you run and VulnTracker tells you when a new CVE affects them — with what is known about fixing it, and nothing about the rest.

Free plan, no card