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

Published Sep 11, 2026
·
Updated

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/hugememory: 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 migratevmapages().

pmdtranshugelock() succeeds for such PMDs (pmdishuge() 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 VMBUGON() 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):

queuefoliospmd() is called under pmdtranshugelock(), whose pmdishuge() check returns true for any non-present, non-none PMD softleaf. Passing such a PMD to pmdfolio() treats the softleaf encoding as a hardware PFN and can return a bogus folio pointer.

Mirror queuefoliospterange(): 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 migratevmapages(), leaving a device-private PMD. Userspace then calls mbind(), migratepages() or setmempolicyhomenode() on that range.

Affected Software

1 affected component
Linux Kernel

Event History

Sep 11, 2026
CVE Published
via MITRE·07:47 PM
Data Sourced
via MITRE·07:47 PM
Description

Frequently Asked Questions

1

Which systems are exposed to this issue?

The affected path is reachable when an HMM-based GPU driver migrates an anonymous THP folio to device memory using migrate_vma_pages(), leaving a device-private swap entry in a PMD. Systems without that device-private PMD scenario are not identified as affected by the provided data.

2

What impact can occur when the affected path is reached?

Outcomes include a VM_BUG_ON() on debug kernels, an oops caused by a bogus vmemmap dereference, or silent isolation of an unrelated live folio from the LRU in an aliasing case. The issue arises when a non-present huge PMD is passed to pmd_folio(), which can produce a bogus folio pointer.

3

Is a default Linux configuration known to be affected?

The provided information does not state whether the required HMM-based GPU driver, anonymous THP use, and migration to device memory are enabled in default configurations. Exposure depends on whether those conditions can occur on the system.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203