{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-72175", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2026-08-09T03:40:39.910Z", "datePublished": "2026-08-15T05:53:40.011Z", "dateUpdated": "2026-10-16T18:45:00.474Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-17T05:41:11.530Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nfs/proc/task_mmu: fix make_uffd_wp_huge_pte() prot-update race\n\nPatch series \"userfaultfd/pagemap: pre-existing fixes\".\n\nThese are pre-existing bug fixes that were carried at the front of the\nuserfaultfd RWP working-set-tracking series up to v5 [1]. Per review\nfeedback that fixes should not sit in the middle of a feature series, they\nare split out and sent on their own; the RWP series is reposted rebased on\ntop of this.\n\nAll six were flagged by the Sashiko AI review of the RWP series and carry\nindependent of RWP, apply to mm-new directly, and carry Cc: stable@.\n\n 1: fs/proc/task_mmu: a missing huge_ptep_modify_prot_start() in\n make_uffd_wp_huge_pte() can lose hardware Dirty/Accessed updates\n when PAGEMAP_SCAN write-protects a hugetlb PTE.\n\n 2: fs/proc/task_mmu: pagemap_scan_hugetlb_entry() compares the range\n against HPAGE_SIZE rather than the hstate page size, so it never\n write-protects gigantic hugetlb pages.\n\n 3: fs/proc/task_mmu: PAGEMAP_SCAN with PM_SCAN_WP_MATCHING over an\n unpopulated hugetlb range self-deadlocks -- pagemap_scan_pte_hole()\n calls uffd_wp_range() while walk_hugetlb_range() holds the hugetlb\n vma lock for read, and hugetlb_change_protection() then takes it\n for write. Install the marker inline instead.\n\n 4: mm/huge_memory: change_non_present_huge_pmd() drops pmd_swp_uffd_wp\n on a device-private PMD permission downgrade, silently losing the\n uffd-wp marker.\n\n 5: userfaultfd: must_wait() applies pte_write() to a locklessly read\n PTE without checking pte_present(), so swap/migration entries\n decode random offset bits and a thread can stay parked on a stale\n fault.\n\n 6: userfaultfd: __VMA_UFFD_FLAGS feeds VMA_UFFD_MINOR_BIT (41) to\n mk_vma_flags() unconditionally, an out-of-bounds write into the\n single-word vma_flags_t on 32-bit. Build the mask from config-gated\n per-mode masks so an unavailable bit is never materialised.\n\n\nThis patch (of 6):\n\nmake_uffd_wp_huge_pte() arms the UFFD_WP bit on a present HugeTLB PTE by\ncalling huge_ptep_modify_prot_commit() with a ptent snapshot that was\nfetched without the corresponding huge_ptep_modify_prot_start(). The\nstart helper is what atomically clears the entry so the kernel-owned\nsnapshot stays consistent until the commit; without it, the hardware may\nset Dirty or Accessed in the live PTE between the original read and the\ncommit, and huge_ptep_modify_prot_commit() (whose generic implementation\njust calls set_huge_pte_at()) then writes the stale snapshot back over the\nlive hardware bits, losing the update.\n\nThe non-hugetlb sibling make_uffd_wp_pte() does this correctly via\nptep_modify_prot_start() / ptep_modify_prot_commit(). Mirror that pattern\nfor the present-PTE branch. The migration case stays as-is -- migration\nentries are non-present, so there's no hardware update to race against." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N", "baseScore": 7.1, "baseSeverity": "HIGH" }, "scenarios": [ { "lang": "en", "value": "AV:L - The bug is reached only through the PAGEMAP_SCAN ioctl on /proc//pagemap, which requires local access to a process address space and cannot be triggered remotely.\nAC:L - The attacker controls both sides of the race by issuing PAGEMAP_SCAN with PM_SCAN_WP_MATCHING while concurrently writing the same present HugeTLB page from another thread in the target process.\nPR:L - Any unprivileged local user can open /proc/self/pagemap and trigger the ioctl; ptrace read checks also allow same-UID access to another process's pagemap without real root privileges.\nUI:N - No victim user action is required; exploitation is performed entirely by the attacker ioctl-ing pagemap and racing writes against their own or same-UID process mappings.\nS:U - The vulnerability corrupts PTE metadata within the target mm only and does not cross VM, container, or kernel/user security boundaries.\nC:H - Stale HugeTLB PTE commits can clear hardware Dirty/Accessed bits; this PTE corruption can expose stale file-backed data to other mappers or userfaultfd migration consumers instead of current memory contents.\nI:H - Lost Dirty bits break folio dirty tracking and writeback for HugeTLB mappings, allowing silent loss or corruption of in-memory modifications that should have been persisted or migrated.\nA:N - The race corrupts PTE metadata without causing kernel oops, panic, or hang; availability impact is limited to incorrect page state rather than system crash." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "fs/proc/task_mmu.c" ], "versions": [ { "version": "52526ca7fdb905a768a93f8faa418e9b988fc34b", "lessThan": "50a25249a6355db74c2c1b6be541b4caab9f3655", "status": "affected", "versionType": "git" }, { "version": "52526ca7fdb905a768a93f8faa418e9b988fc34b", "lessThan": "8e39ed92d7c5c6bfc08dc45153916f49a4e98bab", "status": "affected", "versionType": "git" }, { "version": "52526ca7fdb905a768a93f8faa418e9b988fc34b", "lessThan": "6b7f774b8882445d9174681747d37c42548686a4", "status": "affected", "versionType": "git" }, { "version": "52526ca7fdb905a768a93f8faa418e9b988fc34b", "lessThan": "04718f7c9290f95385f0dd328758753dc1c36dec", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "fs/proc/task_mmu.c" ], "versions": [ { "version": "6.7", "status": "affected" }, { "version": "0", "lessThan": "6.7", "status": "unaffected", "versionType": "semver" }, { "version": "6.12.101", "lessThanOrEqual": "6.12.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.18.42", "lessThanOrEqual": "6.18.*", "status": "unaffected", "versionType": "semver" }, { "version": "7.1.5", "lessThanOrEqual": "7.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "7.2", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.7", "versionEndExcluding": "6.12.101" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.7", "versionEndExcluding": "6.18.42" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.7", "versionEndExcluding": "7.1.5" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "6.7", "versionEndExcluding": "7.2" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/50a25249a6355db74c2c1b6be541b4caab9f3655" }, { "url": "https://git.kernel.org/stable/c/8e39ed92d7c5c6bfc08dc45153916f49a4e98bab" }, { "url": "https://git.kernel.org/stable/c/6b7f774b8882445d9174681747d37c42548686a4" }, { "url": "https://git.kernel.org/stable/c/04718f7c9290f95385f0dd328758753dc1c36dec" } ], "title": "fs/proc/task_mmu: fix make_uffd_wp_huge_pte() prot-update race", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "metrics": [ { "other": { "type": "ssvc", "content": { "id": "CVE-2026-72175", "role": "CISA Coordinator", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "total" } ], "version": "2.0.3", "timestamp": "2026-10-16T18:43:23.910702Z" } } } ], "title": "CISA ADP Vulnrichment", "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2026-10-16T18:45:00.474Z" } } ] } }