Skip to content
Heist/ feed
Unrated

x86/mm/pat: Acquire init_mm read lock on attribute changes to avoid UAF

Type: advisorySource: Official CVE List1 source record

In the Linux kernel, the following vulnerability has been resolved: x86/mm/pat: Acquire init_mm read lock on attribute changes to avoid UAF A previous commit protected against races between ptdump and CPA collapse, however one still exists between attribute changes and collapse as reported by Denis V. Lunev (linked). When an attribute change arises, a lockless page table walker obtains a PTE entry, which is later written to via set_pte_atomic(): ... -> change_page_attr_set_clr() -> __change_page_attr_set_clr() -> __change_page_attr() -> _lookup_address_cpa() -> lookup_address_in_pgd_attr() -> [ lockless page table walker ] -> set_pte_atomic() There is nothing preventing a concurrent CPA collapse which can free the PTE that was retrieved here, resulting in a use-after-free. With the mmap write lock taken on init_mm over CPA collapse, resolve this race by acquiring an mmap read lock on init_mm over __change_page_attr_set_clr(). This locks across the whole operation over which the walk and the PTE entry write occurs, solving the race. It is safe to do this here, as no spinlocks are held upon entry to __change_page_attr_set_clr(). However, the lock must not be held over an allocation, as allocation can trigger reclaim and shrinkers may call into CPA recursively, making deadlocks possible (init_mm -> ... -> fs_reclaim -> init_mm). A page table is allocated when a huge page needs to be split: -> change_page_attr_set_clr() -> __change_page_attr_set_clr() -> __change_page_attr() -> s

Announced Group revision 1
Original source ↗

CVE-2026-97533

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: cve:CVE-2026-97533

Linux

Source reference: /containers/cna/affected/0/product

Affected versions
Not stated in this record
Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

Linux

Source reference: /containers/cna/affected/1/product

Affected versions
Not stated in this record
Fixed versions
Not stated in this record
Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "vendor": "Linux",
    "product": "Linux",
    "versions": [
      {
        "status": "affected",
        "version": "41d88484c71cd4f659348da41b7b5b3dbd3be1f6",
        "lessThan": "e21a9ea81426a85fdb0cdcfcc99d5d9c16b402ab",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "41d88484c71cd4f659348da41b7b5b3dbd3be1f6",
        "lessThan": "cc73b2043d106b467accd38e9b1fc09e0607c056",
        "versionType": "git"
      },
      {
        "status": "affected",
        "version": "41d88484c71cd4f659348da41b7b5b3dbd3be1f6",
        "lessThan": "d5d8b8662e6e5a565b47a0388640e88402f23274",
        "versionType": "git"
      }
    ],
    "programFiles": [
      "arch/x86/mm/pat/set_memory.c"
    ],
    "defaultStatus": "unaffected"
  },
  {
    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
    "vendor": "Linux",
    "product": "Linux",
    "versions": [
      {
        "status": "affected",
        "version": "6.15"
      },
      {
        "status": "unaffected",
        "version": "0",
        "lessThan": "6.15",
        "versionType": "semver"
      },
      {
        "status": "unaffected",
        "version": "6.18.53",
        "versionType": "semver",
        "lessThanOrEqual": "6.18.*"
      },
      {
        "status": "unaffected",
        "version": "7.2.7",
        "versionType": "semver",
        "lessThanOrEqual": "7.2.*"
      },
      {
        "status": "unaffected",
        "version": "7.3",
        "versionType": "original_commit_for_fix",
        "lessThanOrEqual": "*"
      }
    ],
    "programFiles": [
      "arch/x86/mm/pat/set_memory.c"
    ],
    "defaultStatus": "affected"
  }
]
Related CVEs
CVE-2026-97533

Source reference: /cveMetadata/cveId

Publisher severity

No explicit severity was provided.

Event
#37987 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement