CVE-2026-89758

CVE-2026-89758

High · published September 12, 2026

CVSS v3.1
7.8
EPSS
0%
Percentile
5.4
In the wild
Unconfirmed
What it is

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

mm/mempolicy: skip non-present PMDs when queueing folios

Patch series "mm: handle device-private PMDs in walk callbacks", v3.

Since commit 368076f52ebe ("mm/huge_memory: add device-private THP support

to PMD operations") a PMD may hold a device-private swap entry whenever an

HMM-based GPU driver migrates an anonymous THP folio to device memory via

migrate_vma_pages().

pmd_trans_huge_lock() succeeds for such PMDs (pmd_is_huge() returns true

for any non-present, non-none huge PMD), so several MM walk callbacks that

used to assume present THP or migration entry are now reachable with a

device-private PMD. The results range from a VM_BUG_ON() firing on debug

kernels, to an oops on a bogus vmemmap dereference, to silently isolating

an unrelated live folio from LRU in the aliasing case.

This patch (of 3):

queue_folios_pmd() is called under pmd_trans_huge_lock(), whose

pmd_is_huge() check returns true for any non-present, non-none PMD

softleaf. Passing such a PMD to pmd_folio() treats the softleaf encoding

as a hardware PFN and can return a bogus folio pointer.

Mirror queue_folios_pte_range(): handle non-present entries before looking

up a folio. Keep migration entries counted as failures, but skip other

non-present PMDs such as device-private entries.

Potential trigger: an HMM-based GPU driver migrates an anonymous THP folio

to device memory via migrate_vma_pages(), leaving a device-private PMD.

Userspace then calls mbind(), migrate_pages() or set_mempolicy_home_node()

on that range.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00165 · 5.4th percentile
Published
2026-09-12T00:20Z
References (2)
EPSS history
Timeline
  • 13 SEP 03:23Z
    EPSS moved — → 0%
    epss
  • 11 SEP 19:47Z
    mm/mempolicy: skip non-present PMDs when queueing folios
    cvelistv5