CVE-2026-72174

Source
https://cve.org/CVERecord?id=CVE-2026-72174
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72174.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-72174
Downstream
Published
2026-08-15T05:53:39.276Z
Modified
2026-08-18T03:31:08.613428073Z
Summary
fs/proc/task_mmu: fix hugetlb self-deadlock in pagemap_scan_pte_hole()
Details

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

fs/proc/taskmmu: fix hugetlb self-deadlock in pagemapscanptehole()

A PAGEMAPSCAN ioctl requesting PMSCANWPMATCHING on a hugetlb VMA hangs the calling thread, unkillably, as soon as the scan reaches an unpopulated part of the range:

dopagemapscan() walkpagerange() walkhugetlbrange() hugetlbvmalockread() # take the vma lock for read ... pagemapscanptehole() # ... ->ptehole() for a hole uffdwprange() changeprotection() hugetlbchangeprotection() hugetlbvmalock_write() # ... and block taking it for write

walkhugetlbrange() holds the hugetlb vma lock for read across the whole walk. A present entry goes to ->hugetlbentry(); an unpopulated one goes to ->ptehole(), i.e. pagemapscanptehole(). To write-protect the hole that handler calls uffdwprange(), which on a hugetlb VMA reaches hugetlbchangeprotection() and takes the same vma lock for write. The thread then blocks in downwrite() waiting for the read lock it is itself holding.

The populated path avoids this: pagemapscanhugetlbentry() write-protects the entry inline under the page-table lock and never enters hugetlbchange_protection().

Do the same for holes. Fault in the page table and install the uffd-wp marker directly with makeuffdwphugepte() under the page-table lock, rather than routing through uffdwprange(). That is the same sequence hugetlbchangeprotection() runs for an unpopulated entry, minus the vma write lock -- which is safe to skip because PMD sharing is disabled on uffd-wp VMAs (hugetlbunshareall_pmds() runs at registration), leaving nothing for that lock to serialise against.

Database specific
{
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72174.json"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
52526ca7fdb905a768a93f8faa418e9b988fc34b
Fixed
a6ac03652d9edc30c2912037ac83beb42cc67f8e
Fixed
43b987ed35be9be21a303d1036d4241fec9943df
Fixed
18b8a9700610299819d21fd0ea85d24726d17f65
Fixed
e92d92bbafb264dc0518d52b846a3c07ed8d523f

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72174.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.97
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.40
Type
ECOSYSTEM
Events
Introduced
6.19.0
Fixed
7.1.5

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-72174.json"