[PATCH v2 00/47] mm: various (urgent?) fixes
From: David Hildenbrand (Arm)
Date: Thu Oct 29 2026 - 16:37:39 EST
See v1 on details. TL;DR various fixes :)
Thanks to everyone for the review! Hoping I can get some more? :)
I am planning on picking these myself, moving them to linux-next fairly
soon through mm/core.git.
---
Changes in v2:
- "mm/memfd: check for real shmem inodes before accessing shmem state"
- Call it inode_is_shmem
- "mm/truncate: look again if a folio left the mapping"
- Different fix for truncate_inode_pages_range
- Adjust description
- "mm/huge_memory: fix zapping migration entries for device-private THPs"
- Move handling in zap_deposited_table
- "mm/mmu_gather: fix flushing ranges with 4 GiB or larger"
- Adjust description"
- "mm/huge_memory: split huge PUDs when adjusting VMA boundaries"
- Drop split_pud check
- Link to v1: https://patch.msgid.link/20261027-fixes_core-v1-0-6f74bec9a5bb@xxxxxxxxxx
---
Chris Mason (11):
mm/huge_memory: fix truncate racing with PMD zapping
mm/huge_memory: fix zapping migration entries for device-private THPs
mm/khugepaged: preserve dirty bits when collapsing PTE-mapped THPs
mm/gup: fix clearing folios in memfd_pin_folios()
mm/gup: fix out-of-bounds write for nr_pages == 0 in GUP-fast
mm/mmu_notifier: set ->mm only after mmgrab()
mm/memory: reject remote COW faults on PFN mappings
mm: fix unkillable fault loop on MAP_DROPPABLE memory
mm: fix deadlock of mremap() against UFFDIO_MOVE
mm/ksm: check large swap-cache folios before mapping them
mm/vma: call ->may_split() before a partial merge
David Hildenbrand (Arm) (20):
fork: take mmap_lock before copying mm_struct
mm/memfd: check for real shmem inodes before accessing shmem state
mm/truncate: look again if a folio left the mapping
mm/filemap: finish fault cleanup before dropping the fault lock
mm/rmap: handle device-exclusive entries in folio_referenced_one()
mm/huge_memory: fix list corruption when deferred_split_scan() races with deferred_split_folio()
mm/huge_memory: properly handle refcounted PUD mappings on fork
mm/khugepaged: check if PTE table is empty in try_collapse_pte_mapped_thp()
mm/gup: recheck the PUD under PTL in follow_pud_mask()
mm/gup: check for overflow when converting nr_pages to bytes in GUP-fast
mm/userfaultfd: write-lock the VMA before waking waiters when unregistering
mm/userfaultfd: wake waiters when registration modes are removed
mm/mremap: use pudp_huge_get_and_clear() when moving huge PUDs
mm/mremap: recheck PUDs under the page table lock
mm/madvise: fix data loss from MADV_FREE on a KSM page
mm/ksm: reset the unstable trees of all nodes
mm/ksm: fix use of a freed anon_vma at swap-in
mm/huge_memory: split huge PUDs when adjusting VMA boundaries
mm/vma: don't leak the charge for stack growth
mm/memory-tiers: unregister empty tiers outside memory_tier_lock
Gregory Price (1):
mm/userfaultfd: compare exact registration modes before skipping
Josef Bacik (14):
mm/mglru: don't use stack pointers when walking PUD and PMD tables
mm/memfd: make f_pos accesses atomic
mm/filemap: read mapping->a_ops->free_folio under i_lock
mm/filemap: don't lose a folio lock wakeup to a signal
mm/huge_memory: fix livelock on device private folio
mm/khugepaged: always recheck the pmd in try_collapse_pte_mapped_thp()
mm/khugepaged: fix PMD table lock leak in try_collapse_pte_mapped_thp()
mm/userfaultfd: wake all waiters on unregister
mm/mmu_gather: fix flushing ranges with 4 GiB or larger
mm/mmu_notifier: finish non-blocking interval invalidation on error
mm/mremap: fix moving PUD leaves
mm/memory_hotplug: avoid races in pfn_to_online_page() with dying pgmap
mm: fix unmap_mapping_range() beyond 4 GiB on 32-bit
fs/proc/task_mmu: refuse addresses beyond 32 bits on 32bit
Rik van Riel (1):
mm/cma: don't release CMA pages still in use
fs/proc/task_mmu.c | 6 ++
include/asm-generic/tlb.h | 3 +-
include/linux/huge_mm.h | 5 +-
include/linux/ksm.h | 6 +-
include/linux/memremap.h | 6 ++
include/linux/mmu_notifier.h | 3 +-
include/linux/shmem_fs.h | 6 ++
include/linux/userfaultfd_k.h | 2 -
kernel/fork.c | 20 ++++--
mm/cma.c | 10 ++-
mm/filemap.c | 88 ++++++++++++-------------
mm/gup.c | 53 ++++++++++-----
mm/huge_memory.c | 146 +++++++++++++++++++++++++++++++-----------
mm/hugetlb.c | 14 +---
mm/internal.h | 28 ++++++++
mm/khugepaged.c | 77 +++++++++++-----------
mm/ksm.c | 56 ++++++++++++----
mm/madvise.c | 9 +++
mm/memfd.c | 10 ++-
mm/memfd_luo.c | 2 +-
mm/memory-tiers.c | 29 ++++-----
mm/memory.c | 30 ++++++---
mm/memory_hotplug.c | 13 ++--
mm/memremap.c | 13 ++++
mm/mmap.c | 8 +--
mm/mmu_notifier.c | 24 +++++--
mm/mremap.c | 103 +++++++++++++----------------
mm/nommu.c | 2 +-
mm/rmap.c | 23 +++++--
mm/shmem.c | 5 ++
mm/swapfile.c | 3 +-
mm/truncate.c | 13 +++-
mm/userfaultfd.c | 75 ++++++++++------------
mm/util.c | 13 ++++
mm/vma.c | 24 +++++--
mm/vmscan.c | 4 +-
36 files changed, 585 insertions(+), 347 deletions(-)
---
base-commit: 65ba8f34ec886ec72b2c07ddc8cf3d815c32869d
change-id: 20261021-fixes_core-bdf638faf023
--
Cheers,
David