{"cve":"CVE-2026-72174","nvd":{"published":"2026-08-15T06:21:35.567","modified":"2026-08-17T06:18:17.883","status":"Received","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nfs/proc/task_mmu: fix hugetlb self-deadlock in pagemap_scan_pte_hole()\n\nA PAGEMAP_SCAN ioctl requesting PM_SCAN_WP_MATCHING on a hugetlb VMA hangs\nthe calling thread, unkillably, as soon as the scan reaches an unpopulated\npart of the range:\n\n  do_pagemap_scan()\n    walk_page_range()\n      walk_hugetlb_range()\n        hugetlb_vma_lock_read()           # take the vma lock for read ...\n        pagemap_scan_pte_hole()           # ... ->pte_hole() for a hole\n          uffd_wp_range()\n            change_protection()\n              hugetlb_change_protection()\n                hugetlb_vma_lock_write()  # ... and block taking it for write\n\nwalk_hugetlb_range() holds the hugetlb vma lock for read across the whole\nwalk.  A present entry goes to ->hugetlb_entry(); an unpopulated one goes\nto ->pte_hole(), i.e.  pagemap_scan_pte_hole().  To write-protect the hole\nthat handler calls uffd_wp_range(), which on a hugetlb VMA reaches\nhugetlb_change_protection() and takes the same vma lock for write.  The\nthread then blocks in down_write() waiting for the read lock it is itself\nholding.\n\nThe populated path avoids this: pagemap_scan_hugetlb_entry()\nwrite-protects the entry inline under the page-table lock and never enters\nhugetlb_change_protection().\n\nDo the same for holes.  Fault in the page table and install the uffd-wp\nmarker directly with make_uffd_wp_huge_pte() under the page-table lock,\nrather than routing through uffd_wp_range().  That is the same sequence\nhugetlb_change_protection() runs for an unpopulated entry, minus the vma\nwrite lock -- which is safe to skip because PMD sharing is disabled on\nuffd-wp VMAs (hugetlb_unshare_all_pmds() runs at registration), leaving\nnothing for that lock to serialise against.","cvss_v4":null,"cvss_v3":null,"cwes":[],"references":["https://git.kernel.org/stable/c/18b8a9700610299819d21fd0ea85d24726d17f65","https://git.kernel.org/stable/c/43b987ed35be9be21a303d1036d4241fec9943df","https://git.kernel.org/stable/c/a6ac03652d9edc30c2912037ac83beb42cc67f8e","https://git.kernel.org/stable/c/e92d92bbafb264dc0518d52b846a3c07ed8d523f"],"products":[],"source":"nvd","synced_at":"2026-10-19T22:48:17.459049833+00:00"},"epss":{"cve":"CVE-2026-72174","score":0.00206,"percentile":0.10597,"date":"2026-10-31"},"kev":null,"osv":[],"attribution":["This product uses the NVD API but is not endorsed or certified by the NVD.","EPSS scores: FIRST Exploit Prediction Scoring System, https://www.first.org/epss","Known exploited vulnerabilities: CISA Known Exploited Vulnerabilities Catalog, https://www.cisa.gov/known-exploited-vulnerabilities-catalog","Package advisories: OSV (https://osv.dev), from the GitHub Advisory Database, PyPA, Go, RustSec and other ecosystem databases, under CC-BY 4.0 or CC0","CVE records: the CVE Program's CVE List (https://www.cve.org), under its terms of use (https://www.cve.org/Legal/TermsOfUse). CVE is a registered trademark of The MITRE Corporation; this product is not affiliated with the CVE Program."]}