CVE-2025-21939

drm/xe/hmm: Don't dereference struct page pointers without notifier lock

MEDIUM
5.5
CVSS Score
Published: April 1, 2025 at 03:41 PM UTC
Updated: October 15, 2026 at 10:18 PM 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%
SSVC
No known exploit

Description

In the Linux kernel, the following vulnerability has been resolved: drm/xe/hmm: Don't dereference struct page pointers without notifier lock The pnfs that we obtain from hmm_range_fault() point to pages that we don't have a reference on, and the guarantee that they are still in the cpu page-tables is that the notifier lock must be held and the notifier seqno is still valid. So while building the sg table and marking the pages accesses / dirty we need to hold this lock with a validated seqno. However, the lock is reclaim tainted which makes sg_alloc_table_from_pages_segment() unusable, since it internally allocates memory. Instead build the sg-table manually. For the non-iommu case this might lead to fewer coalesces, but if that's a problem it can be fixed up later in the resource cursor code. For the iommu case, the whole sg-table may still be coalesced to a single contigous device va region. This avoids marking pages that we don't own dirty and accessed, and it also avoid dereferencing struct pages that we don't own. v2: - Use assert to check whether hmm pfns are valid (Matthew Auld) - Take into account that large pages may cross range boundaries (Matthew Auld) v3: - Don't unnecessarily check for a non-freed sg-table. (Matthew Auld) - Add a missing up_read() in an error path. (Matthew Auld) (cherry picked from commit ea3e66d280ce2576664a862693d1da8fd324c317)

Affected

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

6.10 ≤ v < 6.12.196.13 ≤ v < 6.13.76.146.14 rc16.14 rc26.14 rc36.14 rc46.14 rc581e058a3e7fd8593d076b4f26f7b8bb49f1d61e3
Vendor states this is fixed in 0a98219bcc961edd3388960576e4353e123b4a51 (fixed)
Vendor states this is fixed in 2a24c98f0e4cc994334598d4f3a851972064809d (fixed)
Vendor states this is fixed in f9326f529da7298a95643c3267f1c0fdb0db55eb (fixed)
Vendor states this is fixed in 6.10 (unaffected)
Vendor states this is fixed in 6.12.19 (unaffected)
Vendor states this is fixed in 6.13.7 (unaffected)
Vendor states this is fixed in 6.14 (unaffected)

References (3)

Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/0a98219bcc961edd3388960576e4353e123b4a51
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/2a24c98f0e4cc994334598d4f3a851972064809d
Patch
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
https://git.kernel.org/stable/c/f9326f529da7298a95643c3267f1c0fdb0db55eb

SSVC — Action Prioritization

SSVCNo known exploitNot automatableTotal impact

SSVC signals action urgency (what to patch first), separate from CVSS which measures severity.

CVSS

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

Quick Info

StatusMODIFIED
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