CVE-2026-64300: perf/aux: Fix page UAF in map_range()

Published Jul 25, 2026
·
Updated

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

perf/aux: Fix page UAF in maprange()

maprange() reads rb->auxpages[], rb->auxnrpages and rb->auxpgoff via perfmmaptopage() while holding only event->mmapmutex. Those fields are serialized by rb->auxmutex, and mmapmutex is per event.

Thus, two events sharing one rb via PERFEVENTIOCSETOUTPUT can race rballocaux() with maprange(), leading to a page-UAF scenario as follows:

CPU 0 CPU 1 ===== ===== rballocaux() maprange() [1]: allocate rb->auxpages[0] [2]: rb->auxnrpages++ [3]: perfmmaptopage() returns rb->auxpages[0] [4]: map it as VMPFNMAP [5]: rb->auxpgoff = 1

munmap the page [6]: free rb->auxpages[0]

Pages mapped as VMPFNMAP have no refcount protection, so CPU 1 holds a mapping to a freed physical frame.

Fix this by taking rb->auxmutex across the page walk in maprange().

Affected Software

5 affected components
Linux Kernel
Linux Linux kernel>=6.14<6.18.39
Linux Linux kernel>=6.19<7.1.4
Linux Linux kernel=7.2-rc1
Linux Linux kernel=7.2-rc2

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Configuration

    Fix the described race/UAF by taking rb->aux_mutex across the page walk in map_range(), so map_range() is serialized with rb_alloc_aux() when it allocates/free/updates rb->aux_pages, rb->aux_nr_pages, and rb->aux_pgoff.

    Linux kernel rb->aux_mutex locking in map_range() = Hold rb->aux_mutex across the page walk in map_range()
  2. Configuration

    Ensure perf_mmap_to_page() takes the required synchronization (holding only event->mmap_mutex as described in the text) so that the map_range()/rb_alloc_aux() interaction cannot race and map VM_PFNMAP pages to freed physical frames.

    Linux kernel Locking in perf_mmap_to_page() = Hold event->mmap_mutex while mapping

Event History

Jul 25, 2026
CVE Published
via MITRE·08:49 AM
Data Sourced
via MITRE·08:49 AM
DescriptionSeverity
Data Sourced
via Red Hat·10:01 AM
DescriptionSeverityAffected Software
Data Sourced
via NVD·10:17 AM
RemedyDescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What conditions are required to trigger the race?

An attacker needs local access with low privileges and must be able to use perf events. The race requires two events to share a ring buffer through PERF_EVENT_IOC_SET_OUTPUT while auxiliary-buffer allocation and map_range() run concurrently.

2

What is the impact if the race succeeds?

The race can leave a VM_PFNMAP mapping pointing to a freed physical frame because those mappings do not provide page-reference protection. This creates a use-after-free condition with potential confidentiality, integrity, and availability impact.

3

How can I determine whether the kernel includes the fix?

Check whether the kernel contains the change that holds rb->aux_mutex for the full page walk in map_range(). The provided stable-tree references identify commits carrying that fix.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203