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)
                
            References
                    Configurations
                    Configuration 1 (hide)
| 
 | 
History
                    30 Oct 2025, 19:44
| Type | Values Removed | Values Added | 
|---|---|---|
| CVSS | v2 : v3 : | v2 : unknown v3 : 5.5 | 
| First Time | Linux Linux linux Kernel | |
| CPE | cpe:2.3:o:linux:linux_kernel:6.14:rc5:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:6.14:rc4:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:6.14:rc3:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:6.14:rc1:*:*:*:*:*:* cpe:2.3:o:linux:linux_kernel:6.14:rc2:*:*:*:*:*:* | |
| Summary | 
 | |
| CWE | CWE-476 | |
| References | () https://git.kernel.org/stable/c/0a98219bcc961edd3388960576e4353e123b4a51 - Patch | |
| References | () https://git.kernel.org/stable/c/2a24c98f0e4cc994334598d4f3a851972064809d - Patch | |
| References | () https://git.kernel.org/stable/c/f9326f529da7298a95643c3267f1c0fdb0db55eb - Patch | 
01 Apr 2025, 16:15
| Type | Values Removed | Values Added | 
|---|---|---|
| New CVE | 
Information
                Published : 2025-04-01 16:15
Updated : 2025-10-30 19:44
NVD link : CVE-2025-21939
Mitre link : CVE-2025-21939
CVE.ORG link : CVE-2025-21939
JSON object : View
Products Affected
                linux
- linux_kernel
CWE
                
                    
                        
                        CWE-476
                        
            NULL Pointer Dereference
