mm-madvise-skip-device-private-pmds-in-cold-and-pageout-walks.patch removed from -mm tree
The quilt patch titled
Subject: mm/madvise: skip device-private PMDs in cold and pageout walks
has been removed from the -mm tree. Its filename was
mm-madvise-skip-device-private-pmds-in-cold-and-pageout-walks.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Usama Arif <[email protected]>
Subject: mm/madvise: skip device-private PMDs in cold and pageout walks
Date: Fri, 10 Jul 2026 03:55:22 -0700
madvise_cold_or_pageout_pte_range() takes pmd_trans_huge_lock(), whose pmd_is_huge() check returns true for a device-private PMD. The subsequent !pmd_present() branch has a VM_BUG_ON() asserting migration is the only allowed non-present case; a device-private PMD trips it.
Skip device-private PMDs in that non-present branch and continue to huge_unlock before calling pmd_folio(). Downgrade the check to VM_WARN_ON_ONCE() so an unexpected PMD softleaf logs a warning rather than panicking. Drop the thp_migration_supported() guard: it expands to IS_ENABLED(CONFIG_ARCH_SUPPORTS_PMD_SOFTLEAF), and both pmd_is_migration_entry() and pmd_is_device_private_entry() already return false when that config is not selected, so the guard suppresses only the case where the warning would already be silent.
Potential trigger: an HMM-based GPU driver races with madvise(MADV_COLD)/MADV_PAGEOUT: pmd_trans_huge(*pmd) reads true, then migrate_vma_pages() flips the PMD to a device-private entry before the PMD lock is acquired.
---
mm/madvise.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
mm/madvise.c renamed from mm/madvise.c~mm-madvise-skip-device-private-pmds-in-cold-and-pageout-walks +2 -2
@@ -388,8 +388,8 @@ static int madvise_cold_or_pageout_pte_r goto huge_unlock;if (unlikely (!pmd_present (orig_pmd))) { -VM_BUG_ON (thp_migration_supported () && - !pmd_is_migration_entry (orig_pmd)); +VM_WARN_ON_ONCE (!pmd_is_migration_entry (orig_pmd) && + !pmd_is_device_private_entry (orig_pmd)); goto huge_unlock; }
_
Patches currently in -mm which might be from [email protected] are
mm-vmstat-mm-memcontrol-add-_monotonic-vmstat-readers.patch mm-vmscan-add-pgrotate_anon-and-pgrotate_file-vmstat-counters.patch mm-vmscan-reduce-lru_lock-contention-via-vmstat-derived-scan-balance-cost.patch