Commit 8a36f53fd5ec for kernel

commit 8a36f53fd5ec3eff01f1b637d42cbdc3821d0493
Merge: 7d1f84f1b94e 183895979c44
Author: Linus Torvalds <torvalds@linux-foundation.org>
Date:   Tue Oct 27 12:23:17 2026 -1000

    Merge tag 'mm-stable-2026-10-25-19-27' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm

    Pull more MM updates from Andrew Morton:

     - "mm: make VMA flag semantics explicit, eliminate VM_SPECIAL" (Lorenzo
       Stoakes):

       Replace VM_SPECIAL with helpers describing mapping ownership and
       behavior. Enforce the mmap flag rules and convert affected drivers,
       removing ambiguous tests shared by driver mappings and ordinary
       memory.

     - "support kselftest on nommu platform" (Hajime Tazaki):

       Add opt-in mmap and mremap tests for NOMMU systems. Teach the runner
       to avoid its fork-dependent timeout command and document the build
       and runtime requirements.

     - "mm/collapse: separate a collapse from its callers" (Kiryl
       Shutsemau):

       Separate huge-page collapse from caller policy. Replace khugepaged
       identity checks with explicit permissions, and separate scanning from
       collapse with the mmap_lock drop in one place.

     - "mm: implement and use vma_has_anon_rmap(), silence KCSAN" (Lorenzo
       Stoakes):

       Provide a common helper for testing whether a VMA has anonymous
       reverse mappings. Document the locking rules, annotate intentional
       concurrent reads for KCSAN, and convert the core MM callers.

     - "mm/sparse: remove SECTION_MARKED_PRESENT and further cleanups"
       (David Hildenbrand):

       Remove SECTION_MARKED_PRESENT in favor of the early-section flag.
       Simplify sparse memory initialization, section metadata handling and
       related PFN validity checks.

     - "sh: remove NUMA and SPARSEMEM support" (Mike Rapoport):

       Remove SuperH NUMA and SPARSEMEM support. The extra memory banks have
       been unusable since the NO_BOOTMEM conversion, leaving only the code
       and data overhead.

     - "mm: Unify device DAX and HugeTLB vmemmap population paths" (Muchun
       Song):

       Unify the generic device DAX and HugeTLB vmemmap population paths and
       shared tail-page handling. Remove the duplicate DAX machinery while
       retaining the powerpc radix implementation.

     - "kselftest: mm: fix some failure of split_huge_page_test" (Yeoreum
       Yun):

       Fix huge-page split tests racing with khugepaged recollapse. Use
       pagemap and page flags instead of VMA-boundary assumptions which fail
       when glibc has already enabled THP.

     - "memcg: move memcgid refcount to objcg to unpin dying memcgs"
       (Bingfang Guo):

       Let dying memcgs be freed while swapped-out shmem still holds their
       IDs. Move ID references to reparentable objcgs, with the necessary
       swap accounting and RCU lifetime changes.

     - "mm/truncate: fix data loss when truncating straddling large folios"
       (Zhang Yi):

       Preserve out-of-range data when truncating straddling large folios.
       Fix a lookup race and split-failure handling, and handle minimum
       folio orders for the forthcoming ext4 iomap buffered I/O path.

     - "mm/damon: introduce damos quota goal target metric complement flag"
       (SJ Park):

       Let DAMOS quota goals use a metric's complement, so utilization can
       also express free-memory goals without adding separate metrics. Add
       the sysfs interface, documentation and tests.

     - "arm64/mm: Standardize printing for pgtable entries" (Anshuman
       Khandual):

       Use the generic formatter for arm64 page-table entries, ready for
       future wider entries. Move the safe-PTE-update check out of the
       header to avoid an include cycle.

     - "mm: kmsan: fix iounmap metadata teardown" (Dima Koziuk):

       Fix KMSAN metadata leaks on iounmap and failed ioremap allocations.
       Free backing pages before removing their mappings, and share the
       teardown with partial-allocation cleanup.

     - "mm/damon/core: preserve quota state when constructing schemes" (Karl
       Mehltretter):

       Preserve running DAMOS quota state while validating parameter
       updates. Even rejected updates could reset accounting and exceed the
       quota window; add tests for both accepted and rejected updates.

     - "mm/vmalloc: fix vmalloc_dump_obj VA lookup" (Ye Liu):

       Fix vmalloc_dump_obj() lookups for last-page addresses and
       allocations spanning vmap zones. These allocations were being missed
       in diagnostic output.

     - "mm: various (urgent?) fixes" (David Hildenbrand):

       Fix mmap charge leaks and hugetlb use-after-free, wrong-address
       unmapping, stuck locks and endless faults. Also preserve reservations
       on failed mremap and handle stale userfaultfd bits.

     - "maple_tree: fix maple_range_64 crashes in RCU mode" (Dimitris
       Charisis):

       Fix pointer and metadata confusion during RCU destruction of
       maple_range_64 nodes, avoiding double frees and invalid accesses. Add
       a regression test; no in-tree user currently uses this combination.

     - "mm: fix hugetlb NR_HUGETLB accounting on folio migration" (Hongfu
       Li):

       Fix hugetlb migration and preallocation accounting so /proc/vmstat
       retains the correct count and memory.numa_stat follows the folio to
       its new node.

     - "mm/damon: fix a minor bug, clean code, and add a test" (SJ Park):

       Fix 32-bit DAMON age overflow which made old regions look young.
       Share hugetlb folio acquisition code and add a regression test for
       the previously fixed last-region skipping bug.

     - "mm/damon/core: cleanup code, reduce stack usage, and add kunit" (SJ
       Park):

       Reduce kdamond stack usage and remove unused enums. Add deterministic
       PSI quota-goal tests which do not depend on the machine's current
       memory pressure.

     - "mm/damon: fix the temporal goal tuner's size quota conversion"
       (Donggeun Yoo):

       Bound the temporal tuner's quota conversion to prevent overflow and
       zero effective quotas, which could stop schemes making progress. Add
       boundary tests.

     - "Don't use GFP_DMA when calling dma_alloc_coherent" (Baoquan He):

       Remove redundant GFP_DMA flags from coherent DMA allocation calls.
       The DMA API already selects the zone from device limits and ignores
       the caller's flag.

     - "kselftest: mm: fix intermittent failure khugepaged test" (Yeoreum
       Yun):

       Propagate child-process failures in the khugepaged tests and prevent
       background collapse from racing their checks. This removes false
       passes and intermittent failures.

     - "MAINTAINERS: cover all hugetlb headers under HUGETLB SUBSYSTEM"
       (Enze Li):

       Cover all hugetlb headers in MAINTAINERS so get_maintainer.pl finds
       the right maintainers. Also label the closing hugetlb_cgroup.h
       include guard.

    Summary of the 65 singletons in this merge:

      The singletons include a few worthwhile performance fixes. Avoiding
      unnecessary reverse-map tree updates gave a reported 15.9% improvement
      in UnixBench's execl test on a 192-core x86 system. A reclaim retry
      fix stops defrag_mode from spinning under memory.low protection; a
      reported file-creation stress test ran 5.7 times faster, with far less
      memory pressure. Narrower hugetlb invalidations also spare KVM guests
      needless refaults: the reported Redis-in-VM P99 QPS penalty while
      punching holes fell from 7.09% to 1.45%.

      Several fixes prevent lost data or corrupted memory. Lazyfree
      huge-page races with mremap()/munmap() could lose data or access freed
      memory, and MADV_COLD could lose a concurrent write's dirty bit.
      Another fix prevents stale migration entries from outliving large
      folios. On filesystems with blocks smaller than a page, extending a
      file by 4 GiB or more could expose bytes written past the old EOF
      through mmap instead of zeroes. That is fixed, along with
      use-after-free races in PAGEMAP_SCAN during process exit and in
      memory-cgroup accounting on PREEMPT_RT kernels.

      Other fixes stop UFFDIO_MOVE spinning forever on pinned large folios,
      which could wedge other memory operations, and stop mremap() leaking
      commit charges until allocations fail under strict overcommit. A
      further fix keeps userfaultfd tracking intact on neighboring mappings.
      NUMA binding no longer prevents long-term pins when the chosen node
      has only movable memory, fixing QEMU/VFIO startup and io_uring buffer
      registration failures. MGLRU also gets a fix for early-boot crashes
      with memory cgroups disabled at boot, notably in small crash kernels.

    * tag 'mm-stable-2026-10-25-19-27' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm: (213 commits)
      mm: multi-gen LRU: fix NULL lruvec->pgdat deref with memcg disabled on cmdline
      mm/page_counter: use WRITE_ONCE() for emin/elow when parent is the root
      mm/memcontrol: publish null pointer before dropping css reference
      test_maple_tree: test maple_range_64 node in RCU mode
      maple_tree: fix maple_range_64 crashes in RCU mode
      mm/vma: avoid broken uffd merge on mremap
      tools/testing/shared: catch a failed posix_memalign()
      mm/damon/core: remove unreachable damos charge_{target,addr}_from
      mm/shrinker: allocate shrinker_info_unit from a dedicated kmem_cache
      riscv: mm: exclude invalid THP PMDs from page table check
      mm/damon/core: filter out damos address filter-split failed region
      fs/proc/task_mmu: pin mm_users in do_pagemap_scan()
      mm/mempolicy: apply bind policies against the scoped allocation zone
      mm/vmscan: reclaim every zone in per-node proactive reclaim
      mm/mremap: correctly uncharge accountable VMAs in error path
      mm/mremap: populate calculated fields in vrm state correctly
      MAINTAINERS: add an entry for MEMORY MANAGEMENT - MEMORY MAP
      mm: bdi: reset min_ratio after the sysfs attributes are gone
      mm/page_vma_mapped: continue past nonmatching huge PMDs
      selftests/mm: skip hugetlb cgroup v2 tests without the needed controllers
      ...

diff --cc drivers/video/fbdev/ssd1307fb.c
index 8fd96c37ee1a,db61d710fccb..0254a547182d
--- a/drivers/video/fbdev/ssd1307fb.c
+++ b/drivers/video/fbdev/ssd1307fb.c
@@@ -767,11 -767,9 +767,13 @@@ static int ssd1307fb_probe(struct i2c_c
  	info->fix.smem_start = __pa(vmem);
  	info->fix.smem_len = vmem_size;

+ 	info->flags = FBINFO_VIRTFB;
+
 -	fb_deferred_io_init(info);
 +	ret = fb_deferred_io_init(info);
 +	if (ret) {
 +		dev_err(dev, "failed to init fb deferred io: %d\n", ret);
 +		goto fb_defio_error;
 +	}

  	i2c_set_clientdata(client, info);

diff --cc fs/coredump.c
index d88ae18ec59b,5820cb8ec88e..b25ef2ffbdee
--- a/fs/coredump.c
+++ b/fs/coredump.c
@@@ -1850,12 -1608,10 +1850,12 @@@ static unsigned long vma_dump_size(stru
  	}

  	/* Hugetlb memory check */
- 	if (is_vm_hugetlb_page(vma)) {
+ 	if (vma_is_hugetlb(vma)) {
 -		if ((vma->vm_flags & VM_SHARED) && FILTER(HUGETLB_SHARED))
 +		if ((vma->vm_flags & VM_SHARED) &&
 +		    COREDUMP_MEMORY_TYPE_INCLUDE(memory_types, HUGETLB_SHARED))
  			goto whole;
 -		if (!(vma->vm_flags & VM_SHARED) && FILTER(HUGETLB_PRIVATE))
 +		if (!(vma->vm_flags & VM_SHARED) &&
 +		    COREDUMP_MEMORY_TYPE_INCLUDE(memory_types, HUGETLB_PRIVATE))
  			goto whole;
  		return 0;
  	}
diff --cc fs/fuse/dax.c
index b79fa26ce783,a5994f1c637d..cae217ff89ba
--- a/fs/fuse/dax.c
+++ b/fs/fuse/dax.c
@@@ -826,8 -826,7 +826,8 @@@ int fuse_vdax_mmap(struct file *file, s
  {
  	file_accessed(file);
  	vma->vm_ops = &fuse_dax_vm_ops;
- 	vm_flags_set(vma, VM_MIXEDMAP | VM_HUGEPAGE);
+ 	vma_set_flags(vma, VMA_HUGEPAGE_BIT);
 +	vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
  	return 0;
  }

diff --cc kernel/sched/fair.c
index f77e7226693b,000d4cb7aca9..cfc982205b98
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@@ -22,9 -22,7 +22,8 @@@
   */
  #include <linux/energy_model.h>
  #include <linux/mmap_lock.h>
- #include <linux/hugetlb_inline.h>
  #include <linux/jiffies.h>
 +#include <linux/math.h>
  #include <linux/mm_api.h>
  #include <linux/highmem.h>
  #include <linux/hrtimer.h>