CVE-2025-38563

perf/core: Prevent VMA split of buffer mappings

published August 19, 2025

CVSS
—
EPSS
0%
Percentile
33.7
In the wild
Unconfirmed
What it is

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

perf/core: Prevent VMA split of buffer mappings

The perf mmap code is careful about mmap()'ing the user page with the

ringbuffer and additionally the auxiliary buffer, when the event supports

it. Once the first mapping is established, subsequent mapping have to use

the same offset and the same size in both cases. The reference counting for

the ringbuffer and the auxiliary buffer depends on this being correct.

Though perf does not prevent that a related mapping is split via mmap(2),

munmap(2) or mremap(2). A split of a VMA results in perf_mmap_open() calls,

which take reference counts, but then the subsequent perf_mmap_close()

calls are not longer fulfilling the offset and size checks. This leads to

reference count leaks.

As perf already has the requirement for subsequent mappings to match the

initial mapping, the obvious consequence is that VMA splits, caused by

resizing of a mapping or partial unmapping, have to be prevented.

Implement the vm_operations_struct::may_split() callback and return

unconditionally -EINVAL.

That ensures that the mapping offsets and sizes cannot be changed after the

fact. Remapping to a different fixed address with the same size is still

possible as it takes the references for the new mapping and drops those of

the old mapping.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00405 · 33.7th percentile
Published
2025-08-19T17:02Z
EPSS history
Timeline
  • 19 AUG 17:02Z
    perf/core: Prevent VMA split of buffer mappings
    cvelistv5