linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: "Matthew Wilcox (Oracle)" <willy@infradead.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: "Matthew Wilcox (Oracle)" <willy@infradead.org>,
	"Liam R . Howlett" <Liam.Howlett@oracle.com>,
	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
	Vlastimil Babka <vbabka@suse.cz>, Jann Horn <jannh@google.com>,
	linux-mm@kvack.org
Subject: [PATCH] mm: Rename vm_area_struct to mm_area
Date: Tue,  1 Apr 2025 13:25:51 +0100	[thread overview]
Message-ID: <20250401122602.1738511-1-willy@infradead.org> (raw)

We don't need to put "_struct" on the end of the name.  It's obviously
a struct.  Just look at the word "struct" before the name.  The acronym
"vm" tends to mean "virtual machine" rather than "virtual memory" these
days, so use "mm_area" instead of "vm_area".  I decided not to rename
the variables (typically "vma") of type "struct mm_area *" as that would
be a fair bit more disruptive.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
---
Generated against next-20250401.

 Documentation/bpf/prog_lsm.rst                |   6 +-
 Documentation/core-api/cachetlb.rst           |  18 +-
 Documentation/core-api/dma-api.rst            |   4 +-
 Documentation/driver-api/uio-howto.rst        |   2 +-
 Documentation/driver-api/vfio.rst             |   2 +-
 Documentation/filesystems/locking.rst         |  12 +-
 Documentation/filesystems/proc.rst            |   2 +-
 Documentation/filesystems/vfs.rst             |   2 +-
 Documentation/gpu/drm-mm.rst                  |   4 +-
 Documentation/mm/hmm.rst                      |   2 +-
 Documentation/mm/hugetlbfs_reserv.rst         |  12 +-
 Documentation/mm/process_addrs.rst            |   6 +-
 .../translations/zh_CN/core-api/cachetlb.rst  |  18 +-
 Documentation/translations/zh_CN/mm/hmm.rst   |   2 +-
 .../zh_CN/mm/hugetlbfs_reserv.rst             |  12 +-
 .../userspace-api/media/conf_nitpick.py       |   2 +-
 arch/alpha/include/asm/cacheflush.h           |   6 +-
 arch/alpha/include/asm/machvec.h              |   2 +-
 arch/alpha/include/asm/pci.h                  |   2 +-
 arch/alpha/include/asm/pgtable.h              |   6 +-
 arch/alpha/include/asm/tlbflush.h             |  10 +-
 arch/alpha/kernel/pci-sysfs.c                 |  16 +-
 arch/alpha/kernel/smp.c                       |   8 +-
 arch/alpha/mm/fault.c                         |   2 +-
 arch/arc/include/asm/hugepage.h               |   4 +-
 arch/arc/include/asm/page.h                   |   4 +-
 arch/arc/include/asm/pgtable-bits-arcv2.h     |   2 +-
 arch/arc/include/asm/tlbflush.h               |  12 +-
 arch/arc/kernel/arc_hostlink.c                |   2 +-
 arch/arc/kernel/troubleshoot.c                |   2 +-
 arch/arc/mm/cache.c                           |   2 +-
 arch/arc/mm/fault.c                           |   2 +-
 arch/arc/mm/mmap.c                            |   2 +-
 arch/arc/mm/tlb.c                             |  20 +-
 arch/arm/include/asm/cacheflush.h             |  14 +-
 arch/arm/include/asm/page.h                   |  20 +-
 arch/arm/include/asm/tlbflush.h               |  28 +-
 arch/arm/kernel/asm-offsets.c                 |   4 +-
 arch/arm/kernel/process.c                     |  10 +-
 arch/arm/kernel/smp_tlb.c                     |   6 +-
 arch/arm/kernel/vdso.c                        |   4 +-
 arch/arm/mach-rpc/ecard.c                     |   2 +-
 arch/arm/mm/cache-v6.S                        |   2 +-
 arch/arm/mm/cache-v7.S                        |   2 +-
 arch/arm/mm/cache-v7m.S                       |   2 +-
 arch/arm/mm/copypage-fa.c                     |   2 +-
 arch/arm/mm/copypage-feroceon.c               |   2 +-
 arch/arm/mm/copypage-v4mc.c                   |   2 +-
 arch/arm/mm/copypage-v4wb.c                   |   2 +-
 arch/arm/mm/copypage-v4wt.c                   |   2 +-
 arch/arm/mm/copypage-v6.c                     |   4 +-
 arch/arm/mm/copypage-xsc3.c                   |   2 +-
 arch/arm/mm/copypage-xscale.c                 |   2 +-
 arch/arm/mm/dma-mapping.c                     |   2 +-
 arch/arm/mm/fault-armv.c                      |  10 +-
 arch/arm/mm/fault.c                           |   2 +-
 arch/arm/mm/flush.c                           |  14 +-
 arch/arm/mm/mmap.c                            |   4 +-
 arch/arm/mm/nommu.c                           |   2 +-
 arch/arm/mm/tlb-v6.S                          |   2 +-
 arch/arm/mm/tlb-v7.S                          |   2 +-
 arch/arm/mm/tlb.c                             |  12 +-
 arch/arm/xen/enlighten.c                      |   2 +-
 arch/arm64/include/asm/cacheflush.h           |   2 +-
 arch/arm64/include/asm/hugetlb.h              |  10 +-
 arch/arm64/include/asm/mmu_context.h          |   2 +-
 arch/arm64/include/asm/page.h                 |   6 +-
 arch/arm64/include/asm/pgtable.h              |  38 +--
 arch/arm64/include/asm/pkeys.h                |   4 +-
 arch/arm64/include/asm/tlb.h                  |   2 +-
 arch/arm64/include/asm/tlbflush.h             |   8 +-
 arch/arm64/kernel/mte.c                       |   2 +-
 arch/arm64/kernel/vdso.c                      |   4 +-
 arch/arm64/kvm/mmu.c                          |  10 +-
 arch/arm64/mm/contpte.c                       |  10 +-
 arch/arm64/mm/copypage.c                      |   2 +-
 arch/arm64/mm/fault.c                         |  10 +-
 arch/arm64/mm/flush.c                         |   4 +-
 arch/arm64/mm/hugetlbpage.c                   |  14 +-
 arch/arm64/mm/mmu.c                           |   4 +-
 arch/csky/abiv1/cacheflush.c                  |   4 +-
 arch/csky/abiv1/inc/abi/cacheflush.h          |   4 +-
 arch/csky/abiv1/mmap.c                        |   2 +-
 arch/csky/abiv2/cacheflush.c                  |   2 +-
 arch/csky/include/asm/page.h                  |   2 +-
 arch/csky/include/asm/pgtable.h               |   2 +-
 arch/csky/include/asm/tlbflush.h              |   4 +-
 arch/csky/kernel/vdso.c                       |   2 +-
 arch/csky/mm/fault.c                          |   4 +-
 arch/csky/mm/tlb.c                            |   4 +-
 arch/hexagon/include/asm/cacheflush.h         |   4 +-
 arch/hexagon/include/asm/tlbflush.h           |   4 +-
 arch/hexagon/kernel/vdso.c                    |   4 +-
 arch/hexagon/mm/cache.c                       |   2 +-
 arch/hexagon/mm/vm_fault.c                    |   2 +-
 arch/hexagon/mm/vm_tlb.c                      |   4 +-
 arch/loongarch/include/asm/hugetlb.h          |   4 +-
 arch/loongarch/include/asm/page.h             |   4 +-
 arch/loongarch/include/asm/pgtable.h          |   8 +-
 arch/loongarch/include/asm/tlb.h              |   2 +-
 arch/loongarch/include/asm/tlbflush.h         |   8 +-
 arch/loongarch/kernel/smp.c                   |   6 +-
 arch/loongarch/kernel/vdso.c                  |   4 +-
 arch/loongarch/mm/fault.c                     |   2 +-
 arch/loongarch/mm/hugetlbpage.c               |   2 +-
 arch/loongarch/mm/init.c                      |   2 +-
 arch/loongarch/mm/mmap.c                      |   2 +-
 arch/loongarch/mm/tlb.c                       |   8 +-
 arch/m68k/include/asm/cacheflush_mm.h         |  10 +-
 arch/m68k/include/asm/pgtable_mm.h            |   2 +-
 arch/m68k/include/asm/tlbflush.h              |  12 +-
 arch/m68k/kernel/sys_m68k.c                   |   2 +-
 arch/m68k/mm/cache.c                          |   2 +-
 arch/m68k/mm/fault.c                          |   2 +-
 arch/microblaze/include/asm/cacheflush.h      |   2 +-
 arch/microblaze/include/asm/pgtable.h         |   4 +-
 arch/microblaze/include/asm/tlbflush.h        |   4 +-
 arch/microblaze/mm/fault.c                    |   2 +-
 arch/mips/alchemy/common/setup.c              |   2 +-
 arch/mips/include/asm/cacheflush.h            |  10 +-
 arch/mips/include/asm/hugetlb.h               |   4 +-
 arch/mips/include/asm/page.h                  |   4 +-
 arch/mips/include/asm/pgtable.h               |  14 +-
 arch/mips/include/asm/tlbflush.h              |   8 +-
 arch/mips/kernel/smp.c                        |   6 +-
 arch/mips/kernel/vdso.c                       |   2 +-
 arch/mips/mm/c-octeon.c                       |   6 +-
 arch/mips/mm/c-r3k.c                          |   4 +-
 arch/mips/mm/c-r4k.c                          |  10 +-
 arch/mips/mm/cache.c                          |   4 +-
 arch/mips/mm/fault.c                          |   2 +-
 arch/mips/mm/hugetlbpage.c                    |   2 +-
 arch/mips/mm/init.c                           |   6 +-
 arch/mips/mm/mmap.c                           |   2 +-
 arch/mips/mm/tlb-r3k.c                        |   6 +-
 arch/mips/mm/tlb-r4k.c                        |   8 +-
 arch/mips/vdso/genvdso.c                      |   2 +-
 arch/nios2/include/asm/cacheflush.h           |  10 +-
 arch/nios2/include/asm/pgtable.h              |   2 +-
 arch/nios2/include/asm/tlbflush.h             |   6 +-
 arch/nios2/kernel/sys_nios2.c                 |   2 +-
 arch/nios2/mm/cacheflush.c                    |  14 +-
 arch/nios2/mm/fault.c                         |   2 +-
 arch/nios2/mm/init.c                          |   4 +-
 arch/nios2/mm/tlb.c                           |   4 +-
 arch/openrisc/include/asm/pgtable.h           |   8 +-
 arch/openrisc/include/asm/tlbflush.h          |   8 +-
 arch/openrisc/kernel/smp.c                    |   4 +-
 arch/openrisc/mm/cache.c                      |   2 +-
 arch/openrisc/mm/fault.c                      |   2 +-
 arch/openrisc/mm/tlb.c                        |   4 +-
 arch/parisc/include/asm/cacheflush.h          |  12 +-
 arch/parisc/include/asm/hugetlb.h             |   4 +-
 arch/parisc/include/asm/page.h                |   4 +-
 arch/parisc/include/asm/pgtable.h             |   6 +-
 arch/parisc/include/asm/tlbflush.h            |   2 +-
 arch/parisc/kernel/cache.c                    |  30 +-
 arch/parisc/kernel/sys_parisc.c               |   2 +-
 arch/parisc/kernel/traps.c                    |   2 +-
 arch/parisc/kernel/vdso.c                     |   4 +-
 arch/parisc/mm/fault.c                        |   6 +-
 arch/parisc/mm/hugetlbpage.c                  |   4 +-
 arch/powerpc/include/asm/book3s/32/pgtable.h  |   2 +-
 arch/powerpc/include/asm/book3s/32/tlbflush.h |   8 +-
 arch/powerpc/include/asm/book3s/64/hash-4k.h  |   2 +-
 arch/powerpc/include/asm/book3s/64/hash-64k.h |   6 +-
 arch/powerpc/include/asm/book3s/64/hugetlb.h  |  14 +-
 .../include/asm/book3s/64/pgtable-64k.h       |   2 +-
 arch/powerpc/include/asm/book3s/64/pgtable.h  |  30 +-
 arch/powerpc/include/asm/book3s/64/radix.h    |   6 +-
 .../include/asm/book3s/64/tlbflush-radix.h    |  14 +-
 arch/powerpc/include/asm/book3s/64/tlbflush.h |  14 +-
 arch/powerpc/include/asm/cacheflush.h         |   2 +-
 arch/powerpc/include/asm/hugetlb.h            |   6 +-
 arch/powerpc/include/asm/mmu_context.h        |   4 +-
 .../include/asm/nohash/32/hugetlb-8xx.h       |   2 +-
 arch/powerpc/include/asm/nohash/32/pte-8xx.h  |   2 +-
 .../powerpc/include/asm/nohash/hugetlb-e500.h |   2 +-
 arch/powerpc/include/asm/nohash/pgtable.h     |   4 +-
 arch/powerpc/include/asm/nohash/tlbflush.h    |  10 +-
 arch/powerpc/include/asm/page.h               |   2 +-
 arch/powerpc/include/asm/pci.h                |   4 +-
 arch/powerpc/include/asm/pgtable.h            |   6 +-
 arch/powerpc/include/asm/pkeys.h              |   6 +-
 arch/powerpc/include/asm/vas.h                |   2 +-
 arch/powerpc/kernel/pci-common.c              |   4 +-
 arch/powerpc/kernel/proc_powerpc.c            |   2 +-
 arch/powerpc/kernel/vdso.c                    |  10 +-
 arch/powerpc/kvm/book3s_64_vio.c              |   2 +-
 arch/powerpc/kvm/book3s_hv.c                  |   2 +-
 arch/powerpc/kvm/book3s_hv_uvmem.c            |  16 +-
 arch/powerpc/kvm/book3s_xive_native.c         |   6 +-
 arch/powerpc/mm/book3s32/mmu.c                |   2 +-
 arch/powerpc/mm/book3s32/tlb.c                |   4 +-
 arch/powerpc/mm/book3s64/hash_pgtable.c       |   2 +-
 arch/powerpc/mm/book3s64/hash_utils.c         |   2 +-
 arch/powerpc/mm/book3s64/hugetlbpage.c        |   4 +-
 arch/powerpc/mm/book3s64/iommu_api.c          |   2 +-
 arch/powerpc/mm/book3s64/pgtable.c            |  22 +-
 arch/powerpc/mm/book3s64/pkeys.c              |   6 +-
 arch/powerpc/mm/book3s64/radix_hugetlbpage.c  |   8 +-
 arch/powerpc/mm/book3s64/radix_pgtable.c      |   6 +-
 arch/powerpc/mm/book3s64/radix_tlb.c          |  10 +-
 arch/powerpc/mm/book3s64/slice.c              |   4 +-
 arch/powerpc/mm/book3s64/subpage_prot.c       |   4 +-
 arch/powerpc/mm/cacheflush.c                  |   2 +-
 arch/powerpc/mm/copro_fault.c                 |   2 +-
 arch/powerpc/mm/fault.c                       |  12 +-
 arch/powerpc/mm/hugetlbpage.c                 |   2 +-
 arch/powerpc/mm/nohash/e500_hugetlbpage.c     |   6 +-
 arch/powerpc/mm/nohash/tlb.c                  |   6 +-
 arch/powerpc/mm/pgtable.c                     |   6 +-
 arch/powerpc/platforms/book3s/vas-api.c       |   6 +-
 arch/powerpc/platforms/cell/spufs/file.c      |  18 +-
 arch/powerpc/platforms/powernv/memtrace.c     |   2 +-
 arch/powerpc/platforms/powernv/opal-prd.c     |   2 +-
 arch/powerpc/platforms/pseries/vas.c          |   2 +-
 arch/riscv/include/asm/hugetlb.h              |   4 +-
 arch/riscv/include/asm/pgtable.h              |  18 +-
 arch/riscv/include/asm/tlbflush.h             |   6 +-
 arch/riscv/kernel/vdso.c                      |   2 +-
 arch/riscv/kvm/mmu.c                          |   4 +-
 arch/riscv/mm/fault.c                         |   4 +-
 arch/riscv/mm/hugetlbpage.c                   |  10 +-
 arch/riscv/mm/pgtable.c                       |   6 +-
 arch/riscv/mm/tlbflush.c                      |   6 +-
 arch/s390/include/asm/hugetlb.h               |   4 +-
 arch/s390/include/asm/pgtable.h               |  28 +-
 arch/s390/include/asm/tlbflush.h              |   2 +-
 arch/s390/kernel/crash_dump.c                 |   6 +-
 arch/s390/kernel/uv.c                         |   2 +-
 arch/s390/kernel/vdso.c                       |   4 +-
 arch/s390/mm/fault.c                          |   4 +-
 arch/s390/mm/gmap.c                           |  10 +-
 arch/s390/mm/hugetlbpage.c                    |   2 +-
 arch/s390/mm/mmap.c                           |   4 +-
 arch/s390/mm/pgtable.c                        |  12 +-
 arch/s390/pci/pci_mmio.c                      |   4 +-
 arch/sh/include/asm/cacheflush.h              |  14 +-
 arch/sh/include/asm/hugetlb.h                 |   2 +-
 arch/sh/include/asm/page.h                    |   4 +-
 arch/sh/include/asm/pgtable.h                 |   8 +-
 arch/sh/include/asm/tlb.h                     |   4 +-
 arch/sh/include/asm/tlbflush.h                |   8 +-
 arch/sh/kernel/smp.c                          |   6 +-
 arch/sh/kernel/sys_sh.c                       |   2 +-
 arch/sh/kernel/vsyscall/vsyscall.c            |   4 +-
 arch/sh/mm/cache-sh4.c                        |   4 +-
 arch/sh/mm/cache.c                            |  14 +-
 arch/sh/mm/fault.c                            |   4 +-
 arch/sh/mm/hugetlbpage.c                      |   2 +-
 arch/sh/mm/mmap.c                             |   4 +-
 arch/sh/mm/nommu.c                            |   6 +-
 arch/sh/mm/tlb-pteaex.c                       |   2 +-
 arch/sh/mm/tlb-sh3.c                          |   2 +-
 arch/sh/mm/tlb-sh4.c                          |   2 +-
 arch/sh/mm/tlb-urb.c                          |   2 +-
 arch/sh/mm/tlbflush_32.c                      |   4 +-
 arch/sparc/include/asm/cacheflush_64.h        |   2 +-
 arch/sparc/include/asm/cachetlb_32.h          |  10 +-
 arch/sparc/include/asm/hugetlb.h              |   4 +-
 arch/sparc/include/asm/leon.h                 |   4 +-
 arch/sparc/include/asm/page_64.h              |   4 +-
 arch/sparc/include/asm/pgtable_32.h           |   6 +-
 arch/sparc/include/asm/pgtable_64.h           |  20 +-
 arch/sparc/include/asm/tlbflush_64.h          |   4 +-
 arch/sparc/kernel/adi_64.c                    |   8 +-
 arch/sparc/kernel/asm-offsets.c               |   2 +-
 arch/sparc/kernel/pci.c                       |   2 +-
 arch/sparc/kernel/ptrace_64.c                 |   2 +-
 arch/sparc/kernel/sys_sparc_64.c              |   4 +-
 arch/sparc/mm/fault_32.c                      |   4 +-
 arch/sparc/mm/fault_64.c                      |   2 +-
 arch/sparc/mm/hugetlbpage.c                   |   2 +-
 arch/sparc/mm/init_64.c                       |   6 +-
 arch/sparc/mm/leon_mm.c                       |  10 +-
 arch/sparc/mm/srmmu.c                         |  54 +--
 arch/sparc/mm/tlb.c                           |   4 +-
 arch/sparc/vdso/vma.c                         |   2 +-
 arch/um/drivers/mmapper_kern.c                |   2 +-
 arch/um/include/asm/tlbflush.h                |   4 +-
 arch/um/kernel/tlb.c                          |   2 +-
 arch/um/kernel/trap.c                         |   2 +-
 arch/x86/entry/vdso/vma.c                     |  12 +-
 arch/x86/entry/vsyscall/vsyscall_64.c         |   8 +-
 arch/x86/include/asm/mmu_context.h            |   2 +-
 arch/x86/include/asm/paravirt.h               |   4 +-
 arch/x86/include/asm/paravirt_types.h         |   6 +-
 arch/x86/include/asm/pgtable-3level.h         |   2 +-
 arch/x86/include/asm/pgtable.h                |  46 +--
 arch/x86/include/asm/pgtable_32.h             |   2 +-
 arch/x86/include/asm/pkeys.h                  |   6 +-
 arch/x86/include/asm/tlbflush.h               |   2 +-
 arch/x86/kernel/cpu/resctrl/pseudo_lock.c     |   4 +-
 arch/x86/kernel/cpu/sgx/driver.c              |   2 +-
 arch/x86/kernel/cpu/sgx/encl.c                |  14 +-
 arch/x86/kernel/cpu/sgx/encl.h                |   4 +-
 arch/x86/kernel/cpu/sgx/ioctl.c               |   2 +-
 arch/x86/kernel/cpu/sgx/virt.c                |   6 +-
 arch/x86/kernel/shstk.c                       |   2 +-
 arch/x86/kernel/sys_x86_64.c                  |   4 +-
 arch/x86/mm/fault.c                           |  10 +-
 arch/x86/mm/pat/memtype.c                     |  18 +-
 arch/x86/mm/pgtable.c                         |  30 +-
 arch/x86/mm/pkeys.c                           |   4 +-
 arch/x86/um/mem_32.c                          |   6 +-
 arch/x86/um/mem_64.c                          |   2 +-
 arch/x86/um/vdso/vma.c                        |   2 +-
 arch/x86/xen/mmu.c                            |   2 +-
 arch/x86/xen/mmu_pv.c                         |   6 +-
 arch/xtensa/include/asm/cacheflush.h          |  12 +-
 arch/xtensa/include/asm/page.h                |   4 +-
 arch/xtensa/include/asm/pgtable.h             |   8 +-
 arch/xtensa/include/asm/tlbflush.h            |   8 +-
 arch/xtensa/kernel/pci.c                      |   2 +-
 arch/xtensa/kernel/smp.c                      |  10 +-
 arch/xtensa/kernel/syscall.c                  |   2 +-
 arch/xtensa/mm/cache.c                        |  12 +-
 arch/xtensa/mm/fault.c                        |   2 +-
 arch/xtensa/mm/tlb.c                          |   6 +-
 block/fops.c                                  |   2 +-
 drivers/accel/amdxdna/amdxdna_gem.c           |   6 +-
 .../accel/habanalabs/common/command_buffer.c  |   2 +-
 drivers/accel/habanalabs/common/device.c      |   6 +-
 drivers/accel/habanalabs/common/habanalabs.h  |  14 +-
 drivers/accel/habanalabs/common/memory.c      |   8 +-
 drivers/accel/habanalabs/common/memory_mgr.c  |   4 +-
 drivers/accel/habanalabs/gaudi/gaudi.c        |   4 +-
 drivers/accel/habanalabs/gaudi2/gaudi2.c      |   4 +-
 drivers/accel/habanalabs/goya/goya.c          |   4 +-
 drivers/accel/qaic/qaic_data.c                |   2 +-
 drivers/acpi/pfr_telemetry.c                  |   2 +-
 drivers/android/binder.c                      |   6 +-
 drivers/android/binder_alloc.c                |   6 +-
 drivers/android/binder_alloc.h                |   2 +-
 drivers/auxdisplay/cfag12864bfb.c             |   2 +-
 drivers/auxdisplay/ht16k33.c                  |   2 +-
 drivers/block/ublk_drv.c                      |   2 +-
 drivers/cdx/cdx.c                             |   4 +-
 drivers/char/bsr.c                            |   2 +-
 drivers/char/hpet.c                           |   4 +-
 drivers/char/mem.c                            |   8 +-
 drivers/char/uv_mmtimer.c                     |   4 +-
 drivers/comedi/comedi_fops.c                  |   8 +-
 drivers/crypto/hisilicon/qm.c                 |   2 +-
 drivers/dax/device.c                          |   8 +-
 drivers/dma-buf/dma-buf.c                     |   6 +-
 drivers/dma-buf/heaps/cma_heap.c              |   4 +-
 drivers/dma-buf/heaps/system_heap.c           |   2 +-
 drivers/dma-buf/udmabuf.c                     |   4 +-
 drivers/dma/idxd/cdev.c                       |   4 +-
 drivers/firewire/core-cdev.c                  |   2 +-
 drivers/fpga/dfl-afu-main.c                   |   2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c       |   2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c       |   2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_chardev.c      |   6 +-
 drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c     |   2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_events.c       |   2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_migrate.c      |  12 +-
 drivers/gpu/drm/amd/amdkfd/kfd_priv.h         |   8 +-
 drivers/gpu/drm/amd/amdkfd/kfd_process.c      |   2 +-
 drivers/gpu/drm/amd/amdkfd/kfd_svm.c          |  10 +-
 drivers/gpu/drm/armada/armada_gem.c           |   2 +-
 drivers/gpu/drm/drm_fbdev_dma.c               |   2 +-
 drivers/gpu/drm/drm_fbdev_shmem.c             |   2 +-
 drivers/gpu/drm/drm_gem.c                     |   8 +-
 drivers/gpu/drm/drm_gem_dma_helper.c          |   2 +-
 drivers/gpu/drm/drm_gem_shmem_helper.c        |   8 +-
 drivers/gpu/drm/drm_gem_ttm_helper.c          |   2 +-
 drivers/gpu/drm/drm_gpusvm.c                  |  10 +-
 drivers/gpu/drm/drm_prime.c                   |   4 +-
 drivers/gpu/drm/etnaviv/etnaviv_gem.c         |   8 +-
 drivers/gpu/drm/etnaviv/etnaviv_gem.h         |   2 +-
 drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c   |   2 +-
 drivers/gpu/drm/exynos/exynos_drm_fbdev.c     |   2 +-
 drivers/gpu/drm/exynos/exynos_drm_gem.c       |   6 +-
 drivers/gpu/drm/gma500/fbdev.c                |   4 +-
 drivers/gpu/drm/gma500/gem.c                  |   2 +-
 drivers/gpu/drm/i915/display/intel_bo.c       |   2 +-
 drivers/gpu/drm/i915/display/intel_bo.h       |   4 +-
 drivers/gpu/drm/i915/display/intel_fbdev.c    |   2 +-
 drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c    |   2 +-
 drivers/gpu/drm/i915/gem/i915_gem_mman.c      |  22 +-
 drivers/gpu/drm/i915/gem/i915_gem_mman.h      |   4 +-
 drivers/gpu/drm/i915/gem/i915_gem_ttm.c       |   8 +-
 drivers/gpu/drm/i915/gem/i915_gem_userptr.c   |   2 +-
 .../drm/i915/gem/selftests/i915_gem_mman.c    |   8 +-
 .../gpu/drm/i915/gem/selftests/mock_dmabuf.c  |   2 +-
 drivers/gpu/drm/i915/gvt/kvmgt.c              |   2 +-
 drivers/gpu/drm/i915/i915_mm.c                |   4 +-
 drivers/gpu/drm/i915/i915_mm.h                |   8 +-
 drivers/gpu/drm/imagination/pvr_gem.c         |   2 +-
 drivers/gpu/drm/lima/lima_gem.c               |   2 +-
 drivers/gpu/drm/lima/lima_gem.h               |   2 +-
 drivers/gpu/drm/loongson/lsdc_gem.c           |   2 +-
 drivers/gpu/drm/mediatek/mtk_gem.c            |   4 +-
 drivers/gpu/drm/msm/msm_fbdev.c               |   2 +-
 drivers/gpu/drm/msm/msm_gem.c                 |   4 +-
 drivers/gpu/drm/nouveau/nouveau_dmem.c        |   2 +-
 drivers/gpu/drm/nouveau/nouveau_dmem.h        |   2 +-
 drivers/gpu/drm/nouveau/nouveau_gem.c         |   2 +-
 drivers/gpu/drm/nouveau/nouveau_svm.c         |   2 +-
 drivers/gpu/drm/omapdrm/omap_fbdev.c          |   2 +-
 drivers/gpu/drm/omapdrm/omap_gem.c            |   8 +-
 drivers/gpu/drm/omapdrm/omap_gem.h            |   2 +-
 drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c     |   2 +-
 drivers/gpu/drm/panthor/panthor_device.c      |   4 +-
 drivers/gpu/drm/panthor/panthor_device.h      |   2 +-
 drivers/gpu/drm/panthor/panthor_drv.c         |   2 +-
 drivers/gpu/drm/panthor/panthor_gem.c         |   2 +-
 drivers/gpu/drm/radeon/radeon_gem.c           |   2 +-
 drivers/gpu/drm/radeon/radeon_ttm.c           |   2 +-
 drivers/gpu/drm/rockchip/rockchip_drm_gem.c   |   6 +-
 drivers/gpu/drm/tegra/fbdev.c                 |   2 +-
 drivers/gpu/drm/tegra/gem.c                   |   8 +-
 drivers/gpu/drm/tegra/gem.h                   |   4 +-
 drivers/gpu/drm/ttm/ttm_bo_vm.c               |  14 +-
 drivers/gpu/drm/vc4/vc4_bo.c                  |   4 +-
 drivers/gpu/drm/virtio/virtgpu_vram.c         |   2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_gem.c           |   2 +-
 drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c    |   4 +-
 drivers/gpu/drm/xe/display/intel_bo.c         |   2 +-
 drivers/gpu/drm/xe/xe_bo.c                    |   2 +-
 drivers/gpu/drm/xe/xe_device.c                |  10 +-
 drivers/gpu/drm/xe/xe_oa.c                    |   2 +-
 drivers/gpu/drm/xen/xen_drm_front_gem.c       |   2 +-
 drivers/hsi/clients/cmt_speech.c              |   2 +-
 drivers/hv/mshv_root_main.c                   |   6 +-
 drivers/hwtracing/intel_th/msu.c              |   6 +-
 drivers/hwtracing/stm/core.c                  |   6 +-
 drivers/infiniband/core/core_priv.h           |   4 +-
 drivers/infiniband/core/ib_core_uverbs.c      |   6 +-
 drivers/infiniband/core/uverbs_main.c         |   8 +-
 drivers/infiniband/hw/bnxt_re/ib_verbs.c      |   2 +-
 drivers/infiniband/hw/bnxt_re/ib_verbs.h      |   2 +-
 drivers/infiniband/hw/cxgb4/provider.c        |   2 +-
 drivers/infiniband/hw/efa/efa.h               |   2 +-
 drivers/infiniband/hw/efa/efa_verbs.c         |   4 +-
 drivers/infiniband/hw/erdma/erdma_verbs.c     |   2 +-
 drivers/infiniband/hw/erdma/erdma_verbs.h     |   2 +-
 drivers/infiniband/hw/hfi1/file_ops.c         |   6 +-
 drivers/infiniband/hw/hns/hns_roce_main.c     |   2 +-
 drivers/infiniband/hw/irdma/verbs.c           |   4 +-
 drivers/infiniband/hw/mana/main.c             |   2 +-
 drivers/infiniband/hw/mana/mana_ib.h          |   2 +-
 drivers/infiniband/hw/mlx4/main.c             |   2 +-
 drivers/infiniband/hw/mlx4/mr.c               |   2 +-
 drivers/infiniband/hw/mlx5/main.c             |  10 +-
 drivers/infiniband/hw/mthca/mthca_provider.c  |   2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c   |   2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.h   |   2 +-
 drivers/infiniband/hw/qedr/verbs.c            |   2 +-
 drivers/infiniband/hw/qedr/verbs.h            |   2 +-
 drivers/infiniband/hw/qib/qib_file_ops.c      |  14 +-
 drivers/infiniband/hw/usnic/usnic_ib_verbs.c  |   2 +-
 drivers/infiniband/hw/usnic/usnic_ib_verbs.h  |   2 +-
 .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.c   |   2 +-
 .../infiniband/hw/vmw_pvrdma/pvrdma_verbs.h   |   2 +-
 drivers/infiniband/sw/rdmavt/mmap.c           |   6 +-
 drivers/infiniband/sw/rdmavt/mmap.h           |   2 +-
 drivers/infiniband/sw/rxe/rxe_loc.h           |   2 +-
 drivers/infiniband/sw/rxe/rxe_mmap.c          |   6 +-
 drivers/infiniband/sw/siw/siw_verbs.c         |   2 +-
 drivers/infiniband/sw/siw/siw_verbs.h         |   2 +-
 drivers/iommu/dma-iommu.c                     |   4 +-
 drivers/iommu/iommu-sva.c                     |   2 +-
 .../media/common/videobuf2/videobuf2-core.c   |   2 +-
 .../common/videobuf2/videobuf2-dma-contig.c   |   4 +-
 .../media/common/videobuf2/videobuf2-dma-sg.c |   4 +-
 .../media/common/videobuf2/videobuf2-memops.c |   4 +-
 .../media/common/videobuf2/videobuf2-v4l2.c   |   2 +-
 .../common/videobuf2/videobuf2-vmalloc.c      |   4 +-
 drivers/media/dvb-core/dmxdev.c               |   4 +-
 drivers/media/dvb-core/dvb_vb2.c              |   2 +-
 drivers/media/pci/cx18/cx18-fileops.h         |   2 +-
 drivers/media/pci/intel/ipu6/ipu6-dma.c       |   2 +-
 drivers/media/pci/intel/ipu6/ipu6-dma.h       |   2 +-
 .../platform/samsung/exynos-gsc/gsc-m2m.c     |   2 +-
 .../samsung/s3c-camif/camif-capture.c         |   2 +-
 .../media/platform/samsung/s5p-mfc/s5p_mfc.c  |   2 +-
 drivers/media/platform/ti/omap3isp/ispvideo.c |   2 +-
 drivers/media/usb/uvc/uvc_queue.c             |   2 +-
 drivers/media/usb/uvc/uvc_v4l2.c              |   2 +-
 drivers/media/usb/uvc/uvcvideo.h              |   2 +-
 drivers/media/v4l2-core/v4l2-dev.c            |   2 +-
 drivers/media/v4l2-core/v4l2-mem2mem.c        |   4 +-
 drivers/misc/bcm-vk/bcm_vk_dev.c              |   2 +-
 drivers/misc/fastrpc.c                        |   4 +-
 drivers/misc/genwqe/card_dev.c                |   6 +-
 drivers/misc/ocxl/context.c                   |  12 +-
 drivers/misc/ocxl/file.c                      |   2 +-
 drivers/misc/ocxl/ocxl_internal.h             |   2 +-
 drivers/misc/ocxl/sysfs.c                     |   4 +-
 drivers/misc/open-dice.c                      |   2 +-
 drivers/misc/sgi-gru/grufault.c               |  14 +-
 drivers/misc/sgi-gru/grufile.c                |   6 +-
 drivers/misc/sgi-gru/grumain.c                |  10 +-
 drivers/misc/sgi-gru/grutables.h              |  12 +-
 drivers/misc/uacce/uacce.c                    |   4 +-
 drivers/mtd/mtdchar.c                         |   2 +-
 drivers/pci/mmap.c                            |   4 +-
 drivers/pci/p2pdma.c                          |   2 +-
 drivers/pci/pci-sysfs.c                       |  16 +-
 drivers/pci/pci.h                             |   2 +-
 drivers/pci/proc.c                            |   2 +-
 drivers/platform/x86/intel/pmt/class.c        |   2 +-
 drivers/ptp/ptp_vmclock.c                     |   2 +-
 drivers/rapidio/devices/rio_mport_cdev.c      |   6 +-
 drivers/sbus/char/flash.c                     |   2 +-
 drivers/sbus/char/oradax.c                    |   4 +-
 drivers/scsi/sg.c                             |   4 +-
 drivers/soc/aspeed/aspeed-lpc-ctrl.c          |   2 +-
 drivers/soc/aspeed/aspeed-p2a-ctrl.c          |   2 +-
 drivers/soc/qcom/rmtfs_mem.c                  |   2 +-
 .../staging/media/atomisp/include/hmm/hmm.h   |   2 +-
 .../media/atomisp/include/hmm/hmm_bo.h        |   2 +-
 drivers/staging/media/atomisp/pci/hmm/hmm.c   |   2 +-
 .../staging/media/atomisp/pci/hmm/hmm_bo.c    |   6 +-
 drivers/staging/vme_user/vme.c                |   2 +-
 drivers/staging/vme_user/vme.h                |   2 +-
 drivers/staging/vme_user/vme_user.c           |   8 +-
 drivers/target/target_core_user.c             |   8 +-
 drivers/tee/optee/call.c                      |   2 +-
 drivers/tee/tee_shm.c                         |   2 +-
 drivers/uio/uio.c                             |  10 +-
 drivers/uio/uio_hv_generic.c                  |   2 +-
 drivers/usb/core/devio.c                      |   6 +-
 drivers/usb/gadget/function/uvc_queue.c       |   2 +-
 drivers/usb/gadget/function/uvc_queue.h       |   2 +-
 drivers/usb/gadget/function/uvc_v4l2.c        |   2 +-
 drivers/usb/mon/mon_bin.c                     |   6 +-
 drivers/vdpa/vdpa_user/iova_domain.c          |   2 +-
 drivers/vfio/cdx/main.c                       |   4 +-
 drivers/vfio/fsl-mc/vfio_fsl_mc.c             |   4 +-
 .../vfio/pci/hisilicon/hisi_acc_vfio_pci.c    |   2 +-
 drivers/vfio/pci/nvgrace-gpu/main.c           |   2 +-
 drivers/vfio/pci/vfio_pci_core.c              |   6 +-
 drivers/vfio/platform/vfio_platform_common.c  |   4 +-
 drivers/vfio/platform/vfio_platform_private.h |   2 +-
 drivers/vfio/vfio_iommu_type1.c               |   4 +-
 drivers/vfio/vfio_main.c                      |   2 +-
 drivers/vhost/vdpa.c                          |   6 +-
 drivers/video/fbdev/68328fb.c                 |   4 +-
 drivers/video/fbdev/atafb.c                   |   2 +-
 drivers/video/fbdev/aty/atyfb_base.c          |   4 +-
 drivers/video/fbdev/au1100fb.c                |   2 +-
 drivers/video/fbdev/au1200fb.c                |   2 +-
 drivers/video/fbdev/bw2.c                     |   4 +-
 drivers/video/fbdev/cg14.c                    |   4 +-
 drivers/video/fbdev/cg3.c                     |   4 +-
 drivers/video/fbdev/cg6.c                     |   4 +-
 drivers/video/fbdev/controlfb.c               |   2 +-
 drivers/video/fbdev/core/fb_chrdev.c          |   2 +-
 drivers/video/fbdev/core/fb_defio.c           |   2 +-
 drivers/video/fbdev/core/fb_io_fops.c         |   2 +-
 drivers/video/fbdev/ep93xx-fb.c               |   2 +-
 drivers/video/fbdev/ffb.c                     |   4 +-
 drivers/video/fbdev/gbefb.c                   |   2 +-
 drivers/video/fbdev/leo.c                     |   4 +-
 drivers/video/fbdev/omap/omapfb.h             |   2 +-
 drivers/video/fbdev/omap/omapfb_main.c        |   2 +-
 .../video/fbdev/omap2/omapfb/omapfb-main.c    |   6 +-
 drivers/video/fbdev/p9100.c                   |   4 +-
 drivers/video/fbdev/ps3fb.c                   |   2 +-
 drivers/video/fbdev/pxa3xx-gcu.c              |   2 +-
 drivers/video/fbdev/sa1100fb.c                |   2 +-
 drivers/video/fbdev/sbuslib.c                 |   2 +-
 drivers/video/fbdev/sbuslib.h                 |   4 +-
 drivers/video/fbdev/sh_mobile_lcdcfb.c        |   4 +-
 drivers/video/fbdev/smscufx.c                 |   2 +-
 drivers/video/fbdev/tcx.c                     |   4 +-
 drivers/video/fbdev/udlfb.c                   |   2 +-
 drivers/video/fbdev/vfb.c                     |   4 +-
 drivers/virt/acrn/mm.c                        |   2 +-
 drivers/xen/gntalloc.c                        |   6 +-
 drivers/xen/gntdev.c                          |  10 +-
 drivers/xen/privcmd-buf.c                     |   6 +-
 drivers/xen/privcmd.c                         |  26 +-
 drivers/xen/xenbus/xenbus_dev_backend.c       |   2 +-
 drivers/xen/xenfs/xenstored.c                 |   2 +-
 drivers/xen/xlate_mmu.c                       |   8 +-
 fs/9p/vfs_file.c                              |   4 +-
 fs/afs/file.c                                 |  12 +-
 fs/aio.c                                      |   4 +-
 fs/backing-file.c                             |   2 +-
 fs/bcachefs/fs.c                              |   2 +-
 fs/binfmt_elf.c                               |   2 +-
 fs/btrfs/file.c                               |   2 +-
 fs/buffer.c                                   |   2 +-
 fs/ceph/addr.c                                |   6 +-
 fs/ceph/super.h                               |   2 +-
 fs/coda/file.c                                |   6 +-
 fs/coredump.c                                 |  12 +-
 fs/cramfs/inode.c                             |   4 +-
 fs/dax.c                                      |   8 +-
 fs/ecryptfs/file.c                            |   2 +-
 fs/erofs/data.c                               |   2 +-
 fs/exec.c                                     |  12 +-
 fs/exfat/file.c                               |   4 +-
 fs/ext2/file.c                                |   2 +-
 fs/ext4/file.c                                |   2 +-
 fs/ext4/inode.c                               |   2 +-
 fs/f2fs/file.c                                |   2 +-
 fs/fuse/dax.c                                 |   2 +-
 fs/fuse/file.c                                |   4 +-
 fs/fuse/fuse_i.h                              |   4 +-
 fs/fuse/passthrough.c                         |   2 +-
 fs/gfs2/file.c                                |   2 +-
 fs/hugetlbfs/inode.c                          |  14 +-
 fs/kernfs/file.c                              |   6 +-
 fs/nfs/file.c                                 |   2 +-
 fs/nfs/internal.h                             |   2 +-
 fs/nilfs2/file.c                              |   4 +-
 fs/ntfs3/file.c                               |   2 +-
 fs/ocfs2/mmap.c                               |   4 +-
 fs/ocfs2/mmap.h                               |   2 +-
 fs/orangefs/file.c                            |   2 +-
 fs/overlayfs/file.c                           |   2 +-
 fs/proc/base.c                                |   6 +-
 fs/proc/inode.c                               |   4 +-
 fs/proc/task_mmu.c                            |  88 ++---
 fs/proc/task_nommu.c                          |  12 +-
 fs/proc/vmcore.c                              |  14 +-
 fs/ramfs/file-nommu.c                         |   4 +-
 fs/romfs/mmap-nommu.c                         |   2 +-
 fs/smb/client/cifsfs.h                        |   4 +-
 fs/smb/client/file.c                          |   4 +-
 fs/sysfs/file.c                               |   2 +-
 fs/ubifs/file.c                               |   2 +-
 fs/udf/file.c                                 |   4 +-
 fs/userfaultfd.c                              |  20 +-
 fs/vboxsf/file.c                              |   4 +-
 fs/xfs/xfs_file.c                             |   2 +-
 fs/zonefs/file.c                              |   2 +-
 include/asm-generic/cacheflush.h              |   8 +-
 include/asm-generic/hugetlb.h                 |   4 +-
 include/asm-generic/mm_hooks.h                |   2 +-
 include/asm-generic/tlb.h                     |  12 +-
 include/drm/drm_gem.h                         |  10 +-
 include/drm/drm_gem_dma_helper.h              |   4 +-
 include/drm/drm_gem_shmem_helper.h            |   4 +-
 include/drm/drm_gem_ttm_helper.h              |   2 +-
 include/drm/drm_gem_vram_helper.h             |   2 +-
 include/drm/drm_prime.h                       |   4 +-
 include/drm/ttm/ttm_bo.h                      |   8 +-
 include/linux/backing-file.h                  |   2 +-
 include/linux/binfmts.h                       |   2 +-
 include/linux/bpf.h                           |   2 +-
 include/linux/btf_ids.h                       |   2 +-
 include/linux/buffer_head.h                   |   2 +-
 include/linux/buildid.h                       |   6 +-
 include/linux/cacheflush.h                    |   2 +-
 include/linux/configfs.h                      |   2 +-
 include/linux/crash_dump.h                    |   2 +-
 include/linux/dax.h                           |   4 +-
 include/linux/dma-buf.h                       |   4 +-
 include/linux/dma-map-ops.h                   |  10 +-
 include/linux/dma-mapping.h                   |  12 +-
 include/linux/fb.h                            |   8 +-
 include/linux/fs.h                            |  14 +-
 include/linux/gfp.h                           |   8 +-
 include/linux/highmem.h                       |  10 +-
 include/linux/huge_mm.h                       |  92 +++---
 include/linux/hugetlb.h                       | 132 ++++----
 include/linux/hugetlb_inline.h                |   4 +-
 include/linux/io-mapping.h                    |   2 +-
 include/linux/iomap.h                         |   2 +-
 include/linux/iommu-dma.h                     |   4 +-
 include/linux/kernfs.h                        |   4 +-
 include/linux/khugepaged.h                    |   4 +-
 include/linux/ksm.h                           |  12 +-
 include/linux/kvm_host.h                      |   2 +-
 include/linux/lsm_hook_defs.h                 |   2 +-
 include/linux/mempolicy.h                     |  20 +-
 include/linux/migrate.h                       |   6 +-
 include/linux/mm.h                            | 308 +++++++++---------
 include/linux/mm_inline.h                     |  18 +-
 include/linux/mm_types.h                      |  14 +-
 include/linux/mmdebug.h                       |   4 +-
 include/linux/mmu_notifier.h                  |   8 +-
 include/linux/net.h                           |   4 +-
 include/linux/pagemap.h                       |   2 +-
 include/linux/pagewalk.h                      |  10 +-
 include/linux/pci.h                           |   4 +-
 include/linux/perf_event.h                    |   4 +-
 include/linux/pgtable.h                       | 100 +++---
 include/linux/pkeys.h                         |   2 +-
 include/linux/proc_fs.h                       |   2 +-
 include/linux/ring_buffer.h                   |   2 +-
 include/linux/rmap.h                          |  92 +++---
 include/linux/secretmem.h                     |   4 +-
 include/linux/security.h                      |   4 +-
 include/linux/shmem_fs.h                      |  12 +-
 include/linux/swap.h                          |   2 +-
 include/linux/swapops.h                       |   4 +-
 include/linux/sysfs.h                         |   4 +-
 include/linux/time_namespace.h                |   6 +-
 include/linux/uacce.h                         |   2 +-
 include/linux/uio_driver.h                    |   2 +-
 include/linux/uprobes.h                       |  10 +-
 include/linux/userfaultfd_k.h                 |  86 ++---
 include/linux/vdso_datastore.h                |   2 +-
 include/linux/vfio.h                          |   2 +-
 include/linux/vfio_pci_core.h                 |   4 +-
 include/linux/vmalloc.h                       |   6 +-
 include/media/dvb_vb2.h                       |   4 +-
 include/media/v4l2-dev.h                      |   2 +-
 include/media/v4l2-mem2mem.h                  |   6 +-
 include/media/videobuf2-core.h                |   6 +-
 include/media/videobuf2-v4l2.h                |   2 +-
 include/net/sock.h                            |   2 +-
 include/net/tcp.h                             |   2 +-
 include/rdma/ib_verbs.h                       |   6 +-
 include/rdma/rdma_vt.h                        |   2 +-
 include/sound/compress_driver.h               |   2 +-
 include/sound/hwdep.h                         |   2 +-
 include/sound/info.h                          |   2 +-
 include/sound/memalloc.h                      |   4 +-
 include/sound/pcm.h                           |   8 +-
 include/sound/soc-component.h                 |   6 +-
 include/trace/events/mmap.h                   |   4 +-
 include/trace/events/sched.h                  |   2 +-
 include/uapi/linux/bpf.h                      |   2 +-
 include/xen/xen-ops.h                         |  24 +-
 io_uring/memmap.c                             |   6 +-
 io_uring/memmap.h                             |   2 +-
 ipc/shm.c                                     |  22 +-
 kernel/acct.c                                 |   2 +-
 kernel/bpf/arena.c                            |  10 +-
 kernel/bpf/arraymap.c                         |   2 +-
 kernel/bpf/ringbuf.c                          |   4 +-
 kernel/bpf/stackmap.c                         |   4 +-
 kernel/bpf/syscall.c                          |   6 +-
 kernel/bpf/task_iter.c                        |  16 +-
 kernel/bpf/verifier.c                         |   2 +-
 kernel/dma/coherent.c                         |   6 +-
 kernel/dma/direct.c                           |   2 +-
 kernel/dma/direct.h                           |   2 +-
 kernel/dma/dummy.c                            |   2 +-
 kernel/dma/mapping.c                          |   8 +-
 kernel/dma/ops_helpers.c                      |   2 +-
 kernel/events/core.c                          |  24 +-
 kernel/events/uprobes.c                       |  48 +--
 kernel/fork.c                                 |  26 +-
 kernel/kcov.c                                 |   2 +-
 kernel/relay.c                                |   6 +-
 kernel/sched/fair.c                           |   4 +-
 kernel/signal.c                               |   2 +-
 kernel/sys.c                                  |   2 +-
 kernel/time/namespace.c                       |   2 +-
 kernel/trace/ring_buffer.c                    |   6 +-
 kernel/trace/trace.c                          |   4 +-
 kernel/trace/trace_output.c                   |   2 +-
 lib/buildid.c                                 |   6 +-
 lib/test_hmm.c                                |   6 +-
 lib/vdso/datastore.c                          |   6 +-
 mm/damon/ops-common.c                         |   4 +-
 mm/damon/ops-common.h                         |   4 +-
 mm/damon/paddr.c                              |   4 +-
 mm/damon/tests/vaddr-kunit.h                  |  16 +-
 mm/damon/vaddr.c                              |   4 +-
 mm/debug.c                                    |   2 +-
 mm/debug_vm_pgtable.c                         |   2 +-
 mm/filemap.c                                  |  12 +-
 mm/gup.c                                      |  56 ++--
 mm/hmm.c                                      |   6 +-
 mm/huge_memory.c                              | 104 +++---
 mm/hugetlb.c                                  | 158 ++++-----
 mm/internal.h                                 |  46 +--
 mm/interval_tree.c                            |  16 +-
 mm/io-mapping.c                               |   2 +-
 mm/khugepaged.c                               |  34 +-
 mm/ksm.c                                      |  48 +--
 mm/madvise.c                                  |  78 ++---
 mm/memory-failure.c                           |  16 +-
 mm/memory.c                                   | 244 +++++++-------
 mm/mempolicy.c                                |  42 +--
 mm/migrate.c                                  |  10 +-
 mm/migrate_device.c                           |   4 +-
 mm/mincore.c                                  |   8 +-
 mm/mlock.c                                    |  16 +-
 mm/mmap.c                                     |  70 ++--
 mm/mmu_gather.c                               |   4 +-
 mm/mprotect.c                                 |  22 +-
 mm/mremap.c                                   |  46 +--
 mm/mseal.c                                    |  14 +-
 mm/msync.c                                    |   2 +-
 mm/nommu.c                                    |  66 ++--
 mm/oom_kill.c                                 |   2 +-
 mm/page_idle.c                                |   2 +-
 mm/page_vma_mapped.c                          |   4 +-
 mm/pagewalk.c                                 |  20 +-
 mm/pgtable-generic.c                          |  20 +-
 mm/rmap.c                                     |  74 ++---
 mm/secretmem.c                                |   4 +-
 mm/shmem.c                                    |  34 +-
 mm/swap.c                                     |   2 +-
 mm/swap.h                                     |   6 +-
 mm/swap_state.c                               |   6 +-
 mm/swapfile.c                                 |  14 +-
 mm/userfaultfd.c                              | 116 +++----
 mm/util.c                                     |   4 +-
 mm/vma.c                                      | 196 +++++------
 mm/vma.h                                      | 126 +++----
 mm/vmalloc.c                                  |   4 +-
 mm/vmscan.c                                   |  12 +-
 net/core/sock.c                               |   2 +-
 net/ipv4/tcp.c                                |  12 +-
 net/packet/af_packet.c                        |   6 +-
 net/socket.c                                  |   4 +-
 net/xdp/xsk.c                                 |   2 +-
 samples/ftrace/ftrace-direct-too.c            |   4 +-
 samples/vfio-mdev/mbochs.c                    |   8 +-
 samples/vfio-mdev/mdpy.c                      |   2 +-
 scripts/coccinelle/api/vma_pages.cocci        |   6 +-
 security/apparmor/lsm.c                       |   2 +-
 security/integrity/ima/ima_main.c             |   4 +-
 security/ipe/hooks.c                          |   2 +-
 security/ipe/hooks.h                          |   2 +-
 security/security.c                           |   2 +-
 security/selinux/hooks.c                      |   2 +-
 security/selinux/selinuxfs.c                  |   4 +-
 sound/core/compress_offload.c                 |   2 +-
 sound/core/hwdep.c                            |   2 +-
 sound/core/info.c                             |   2 +-
 sound/core/init.c                             |   2 +-
 sound/core/memalloc.c                         |  22 +-
 sound/core/oss/pcm_oss.c                      |   2 +-
 sound/core/pcm_native.c                       |  20 +-
 sound/soc/fsl/fsl_asrc_m2m.c                  |   2 +-
 sound/soc/intel/avs/pcm.c                     |   2 +-
 sound/soc/loongson/loongson_dma.c             |   2 +-
 sound/soc/pxa/mmp-sspa.c                      |   2 +-
 sound/soc/qcom/lpass-platform.c               |   4 +-
 sound/soc/qcom/qdsp6/q6apm-dai.c              |   2 +-
 sound/soc/qcom/qdsp6/q6asm-dai.c              |   2 +-
 sound/soc/samsung/idma.c                      |   2 +-
 sound/soc/soc-component.c                     |   2 +-
 sound/soc/uniphier/aio-dma.c                  |   2 +-
 sound/usb/usx2y/us122l.c                      |   2 +-
 sound/usb/usx2y/usX2Yhwdep.c                  |   2 +-
 sound/usb/usx2y/usx2yhwdeppcm.c               |   6 +-
 tools/include/linux/btf_ids.h                 |   2 +-
 tools/include/uapi/linux/bpf.h                |   2 +-
 .../testing/selftests/bpf/bpf_experimental.h  |   2 +-
 .../selftests/bpf/progs/bpf_iter_task_vmas.c  |   2 +-
 .../selftests/bpf/progs/bpf_iter_vma_offset.c |   2 +-
 tools/testing/selftests/bpf/progs/find_vma.c  |   2 +-
 .../selftests/bpf/progs/find_vma_fail1.c      |   2 +-
 .../selftests/bpf/progs/find_vma_fail2.c      |   2 +-
 .../selftests/bpf/progs/iters_css_task.c      |   2 +-
 .../selftests/bpf/progs/iters_task_vma.c      |   2 +-
 .../selftests/bpf/progs/iters_testmod.c       |   4 +-
 tools/testing/selftests/bpf/progs/lsm.c       |   2 +-
 .../selftests/bpf/progs/test_bpf_cookie.c     |   2 +-
 .../bpf/progs/verifier_iterating_callbacks.c  |   4 +-
 .../selftests/bpf/test_kmods/bpf_testmod.c    |   2 +-
 .../bpf/test_kmods/bpf_testmod_kfunc.h        |   2 +-
 tools/testing/vma/vma.c                       |  70 ++--
 tools/testing/vma/vma_internal.h              | 156 ++++-----
 virt/kvm/kvm_main.c                           |  12 +-
 861 files changed, 3494 insertions(+), 3494 deletions(-)

diff --git a/Documentation/bpf/prog_lsm.rst b/Documentation/bpf/prog_lsm.rst
index ad2be02f30c2..f2b254b5a6ce 100644
--- a/Documentation/bpf/prog_lsm.rst
+++ b/Documentation/bpf/prog_lsm.rst
@@ -15,7 +15,7 @@ Structure
 The example shows an eBPF program that can be attached to the ``file_mprotect``
 LSM hook:
 
-.. c:function:: int file_mprotect(struct vm_area_struct *vma, unsigned long reqprot, unsigned long prot);
+.. c:function:: int file_mprotect(struct mm_area *vma, unsigned long reqprot, unsigned long prot);
 
 Other LSM hooks which can be instrumented can be found in
 ``security/security.c``.
@@ -31,7 +31,7 @@ the fields that need to be accessed.
 		unsigned long start_brk, brk, start_stack;
 	} __attribute__((preserve_access_index));
 
-	struct vm_area_struct {
+	struct mm_area {
 		unsigned long start_brk, brk, start_stack;
 		unsigned long vm_start, vm_end;
 		struct mm_struct *vm_mm;
@@ -65,7 +65,7 @@ example:
 .. code-block:: c
 
 	SEC("lsm/file_mprotect")
-	int BPF_PROG(mprotect_audit, struct vm_area_struct *vma,
+	int BPF_PROG(mprotect_audit, struct mm_area *vma,
 		     unsigned long reqprot, unsigned long prot, int ret)
 	{
 		/* ret is the return value from the previous BPF program
diff --git a/Documentation/core-api/cachetlb.rst b/Documentation/core-api/cachetlb.rst
index 889fc84ccd1b..597eb9760dea 100644
--- a/Documentation/core-api/cachetlb.rst
+++ b/Documentation/core-api/cachetlb.rst
@@ -50,7 +50,7 @@ changes occur:
 	page table operations such as what happens during
 	fork, and exec.
 
-3) ``void flush_tlb_range(struct vm_area_struct *vma,
+3) ``void flush_tlb_range(struct mm_area *vma,
    unsigned long start, unsigned long end)``
 
 	Here we are flushing a specific range of (user) virtual
@@ -70,7 +70,7 @@ changes occur:
 	call flush_tlb_page (see below) for each entry which may be
 	modified.
 
-4) ``void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)``
+4) ``void flush_tlb_page(struct mm_area *vma, unsigned long addr)``
 
 	This time we need to remove the PAGE_SIZE sized translation
 	from the TLB.  The 'vma' is the backing structure used by
@@ -89,7 +89,7 @@ changes occur:
 	This is used primarily during fault processing.
 
 5) ``void update_mmu_cache_range(struct vm_fault *vmf,
-   struct vm_area_struct *vma, unsigned long address, pte_t *ptep,
+   struct mm_area *vma, unsigned long address, pte_t *ptep,
    unsigned int nr)``
 
 	At the end of every page fault, this routine is invoked to tell
@@ -159,7 +159,7 @@ Here are the routines, one by one:
 	This option is separate from flush_cache_mm to allow some
 	optimizations for VIPT caches.
 
-3) ``void flush_cache_range(struct vm_area_struct *vma,
+3) ``void flush_cache_range(struct mm_area *vma,
    unsigned long start, unsigned long end)``
 
 	Here we are flushing a specific range of (user) virtual
@@ -176,7 +176,7 @@ Here are the routines, one by one:
 	call flush_cache_page (see below) for each entry which may be
 	modified.
 
-4) ``void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn)``
+4) ``void flush_cache_page(struct mm_area *vma, unsigned long addr, unsigned long pfn)``
 
 	This time we need to remove a PAGE_SIZE sized range
 	from the cache.  The 'vma' is the backing structure used by
@@ -331,9 +331,9 @@ maps this page at its virtual address.
 			dirty.  Again, see sparc64 for examples of how
 			to deal with this.
 
-  ``void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+  ``void copy_to_user_page(struct mm_area *vma, struct page *page,
   unsigned long user_vaddr, void *dst, void *src, int len)``
-  ``void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
+  ``void copy_from_user_page(struct mm_area *vma, struct page *page,
   unsigned long user_vaddr, void *dst, void *src, int len)``
 
 	When the kernel needs to copy arbitrary data in and out
@@ -346,7 +346,7 @@ maps this page at its virtual address.
 	likely that you will need to flush the instruction cache
 	for copy_to_user_page().
 
-  ``void flush_anon_page(struct vm_area_struct *vma, struct page *page,
+  ``void flush_anon_page(struct mm_area *vma, struct page *page,
   unsigned long vmaddr)``
 
   	When the kernel needs to access the contents of an anonymous
@@ -365,7 +365,7 @@ maps this page at its virtual address.
 	If the icache does not snoop stores then this routine will need
 	to flush it.
 
-  ``void flush_icache_page(struct vm_area_struct *vma, struct page *page)``
+  ``void flush_icache_page(struct mm_area *vma, struct page *page)``
 
 	All the functionality of flush_icache_page can be implemented in
 	flush_dcache_folio and update_mmu_cache_range. In the future, the hope
diff --git a/Documentation/core-api/dma-api.rst b/Documentation/core-api/dma-api.rst
index 8e3cce3d0a23..ca0b3e0ef596 100644
--- a/Documentation/core-api/dma-api.rst
+++ b/Documentation/core-api/dma-api.rst
@@ -581,7 +581,7 @@ dma_alloc_pages().  page must be the pointer returned by dma_alloc_pages().
 ::
 
 	int
-	dma_mmap_pages(struct device *dev, struct vm_area_struct *vma,
+	dma_mmap_pages(struct device *dev, struct mm_area *vma,
 		       size_t size, struct page *page)
 
 Map an allocation returned from dma_alloc_pages() into a user address space.
@@ -679,7 +679,7 @@ returned by dma_vmap_noncontiguous().
 ::
 
 	int
-	dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
+	dma_mmap_noncontiguous(struct device *dev, struct mm_area *vma,
 			       size_t size, struct sg_table *sgt)
 
 Map an allocation returned from dma_alloc_noncontiguous() into a user address
diff --git a/Documentation/driver-api/uio-howto.rst b/Documentation/driver-api/uio-howto.rst
index 907ffa3b38f5..9e68c745b295 100644
--- a/Documentation/driver-api/uio-howto.rst
+++ b/Documentation/driver-api/uio-howto.rst
@@ -246,7 +246,7 @@ the members are required, others are optional.
    hardware interrupt number. The flags given here will be used in the
    call to :c:func:`request_irq()`.
 
--  ``int (*mmap)(struct uio_info *info, struct vm_area_struct *vma)``:
+-  ``int (*mmap)(struct uio_info *info, struct mm_area *vma)``:
    Optional. If you need a special :c:func:`mmap()`
    function, you can set it here. If this pointer is not NULL, your
    :c:func:`mmap()` will be called instead of the built-in one.
diff --git a/Documentation/driver-api/vfio.rst b/Documentation/driver-api/vfio.rst
index 2a21a42c9386..056e27a40f3d 100644
--- a/Documentation/driver-api/vfio.rst
+++ b/Documentation/driver-api/vfio.rst
@@ -419,7 +419,7 @@ similar to a file operations structure::
 			 size_t count, loff_t *size);
 		long	(*ioctl)(struct vfio_device *vdev, unsigned int cmd,
 				 unsigned long arg);
-		int	(*mmap)(struct vfio_device *vdev, struct vm_area_struct *vma);
+		int	(*mmap)(struct vfio_device *vdev, struct mm_area *vma);
 		void	(*request)(struct vfio_device *vdev, unsigned int count);
 		int	(*match)(struct vfio_device *vdev, char *buf);
 		void	(*dma_unmap)(struct vfio_device *vdev, u64 iova, u64 length);
diff --git a/Documentation/filesystems/locking.rst b/Documentation/filesystems/locking.rst
index 0ec0bb6eb0fb..9c83c1262882 100644
--- a/Documentation/filesystems/locking.rst
+++ b/Documentation/filesystems/locking.rst
@@ -530,7 +530,7 @@ prototypes::
 	__poll_t (*poll) (struct file *, struct poll_table_struct *);
 	long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
 	long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
-	int (*mmap) (struct file *, struct vm_area_struct *);
+	int (*mmap) (struct file *, struct mm_area *);
 	int (*open) (struct inode *, struct file *);
 	int (*flush) (struct file *);
 	int (*release) (struct inode *, struct file *);
@@ -643,14 +643,14 @@ vm_operations_struct
 
 prototypes::
 
-	void (*open)(struct vm_area_struct *);
-	void (*close)(struct vm_area_struct *);
+	void (*open)(struct mm_area *);
+	void (*close)(struct mm_area *);
 	vm_fault_t (*fault)(struct vm_fault *);
 	vm_fault_t (*huge_fault)(struct vm_fault *, unsigned int order);
 	vm_fault_t (*map_pages)(struct vm_fault *, pgoff_t start, pgoff_t end);
-	vm_fault_t (*page_mkwrite)(struct vm_area_struct *, struct vm_fault *);
-	vm_fault_t (*pfn_mkwrite)(struct vm_area_struct *, struct vm_fault *);
-	int (*access)(struct vm_area_struct *, unsigned long, void*, int, int);
+	vm_fault_t (*page_mkwrite)(struct mm_area *, struct vm_fault *);
+	vm_fault_t (*pfn_mkwrite)(struct mm_area *, struct vm_fault *);
+	int (*access)(struct mm_area *, unsigned long, void*, int, int);
 
 locking rules:
 
diff --git a/Documentation/filesystems/proc.rst b/Documentation/filesystems/proc.rst
index 2a17865dfe39..2935efeceaa9 100644
--- a/Documentation/filesystems/proc.rst
+++ b/Documentation/filesystems/proc.rst
@@ -2175,7 +2175,7 @@ the process is maintaining.  Example output::
      | lr-------- 1 root root 64 Jan 27 11:24 400000-41a000 -> /usr/bin/ls
 
 The name of a link represents the virtual memory bounds of a mapping, i.e.
-vm_area_struct::vm_start-vm_area_struct::vm_end.
+mm_area::vm_start-mm_area::vm_end.
 
 The main purpose of the map_files is to retrieve a set of memory mapped
 files in a fast way instead of parsing /proc/<pid>/maps or
diff --git a/Documentation/filesystems/vfs.rst b/Documentation/filesystems/vfs.rst
index ae79c30b6c0c..866485f271b0 100644
--- a/Documentation/filesystems/vfs.rst
+++ b/Documentation/filesystems/vfs.rst
@@ -1102,7 +1102,7 @@ This describes how the VFS can manipulate an open file.  As of kernel
 		__poll_t (*poll) (struct file *, struct poll_table_struct *);
 		long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
 		long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
-		int (*mmap) (struct file *, struct vm_area_struct *);
+		int (*mmap) (struct file *, struct mm_area *);
 		int (*open) (struct inode *, struct file *);
 		int (*flush) (struct file *, fl_owner_t id);
 		int (*release) (struct inode *, struct file *);
diff --git a/Documentation/gpu/drm-mm.rst b/Documentation/gpu/drm-mm.rst
index d55751cad67c..aac2545c4a54 100644
--- a/Documentation/gpu/drm-mm.rst
+++ b/Documentation/gpu/drm-mm.rst
@@ -280,8 +280,8 @@ made up of several fields, the more interesting ones being:
 .. code-block:: c
 
 	struct vm_operations_struct {
-		void (*open)(struct vm_area_struct * area);
-		void (*close)(struct vm_area_struct * area);
+		void (*open)(struct mm_area * area);
+		void (*close)(struct mm_area * area);
 		vm_fault_t (*fault)(struct vm_fault *vmf);
 	};
 
diff --git a/Documentation/mm/hmm.rst b/Documentation/mm/hmm.rst
index 7d61b7a8b65b..63fbba00dc3d 100644
--- a/Documentation/mm/hmm.rst
+++ b/Documentation/mm/hmm.rst
@@ -298,7 +298,7 @@ between device driver specific code and shared common code:
 
 1. ``mmap_read_lock()``
 
-   The device driver has to pass a ``struct vm_area_struct`` to
+   The device driver has to pass a ``struct mm_area`` to
    migrate_vma_setup() so the mmap_read_lock() or mmap_write_lock() needs to
    be held for the duration of the migration.
 
diff --git a/Documentation/mm/hugetlbfs_reserv.rst b/Documentation/mm/hugetlbfs_reserv.rst
index 4914fbf07966..afb86d44c57e 100644
--- a/Documentation/mm/hugetlbfs_reserv.rst
+++ b/Documentation/mm/hugetlbfs_reserv.rst
@@ -104,7 +104,7 @@ These operations result in a call to the routine hugetlb_reserve_pages()::
 
 	int hugetlb_reserve_pages(struct inode *inode,
 				  long from, long to,
-				  struct vm_area_struct *vma,
+				  struct mm_area *vma,
 				  vm_flags_t vm_flags)
 
 The first thing hugetlb_reserve_pages() does is check if the NORESERVE
@@ -181,7 +181,7 @@ Reservations are consumed when huge pages associated with the reservations
 are allocated and instantiated in the corresponding mapping.  The allocation
 is performed within the routine alloc_hugetlb_folio()::
 
-	struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
+	struct folio *alloc_hugetlb_folio(struct mm_area *vma,
 				     unsigned long addr, int avoid_reserve)
 
 alloc_hugetlb_folio is passed a VMA pointer and a virtual address, so it can
@@ -464,14 +464,14 @@ account the 'opposite' meaning of reservation map entries for private and
 shared mappings and hide this detail from the caller::
 
 	long vma_needs_reservation(struct hstate *h,
-				   struct vm_area_struct *vma,
+				   struct mm_area *vma,
 				   unsigned long addr)
 
 This routine calls region_chg() for the specified page.  If no reservation
 exists, 1 is returned.  If a reservation exists, 0 is returned::
 
 	long vma_commit_reservation(struct hstate *h,
-				    struct vm_area_struct *vma,
+				    struct mm_area *vma,
 				    unsigned long addr)
 
 This calls region_add() for the specified page.  As in the case of region_chg
@@ -483,7 +483,7 @@ vma_needs_reservation.  An unexpected difference indicates the reservation
 map was modified between calls::
 
 	void vma_end_reservation(struct hstate *h,
-				 struct vm_area_struct *vma,
+				 struct mm_area *vma,
 				 unsigned long addr)
 
 This calls region_abort() for the specified page.  As in the case of region_chg
@@ -492,7 +492,7 @@ vma_needs_reservation.  It will abort/end the in progress reservation add
 operation::
 
 	long vma_add_reservation(struct hstate *h,
-				 struct vm_area_struct *vma,
+				 struct mm_area *vma,
 				 unsigned long addr)
 
 This is a special wrapper routine to help facilitate reservation cleanup
diff --git a/Documentation/mm/process_addrs.rst b/Documentation/mm/process_addrs.rst
index e6756e78b476..674c30658f90 100644
--- a/Documentation/mm/process_addrs.rst
+++ b/Documentation/mm/process_addrs.rst
@@ -9,10 +9,10 @@ Process Addresses
 
 
 Userland memory ranges are tracked by the kernel via Virtual Memory Areas or
-'VMA's of type :c:struct:`!struct vm_area_struct`.
+'VMA's of type :c:struct:`!struct mm_area`.
 
 Each VMA describes a virtually contiguous memory range with identical
-attributes, each described by a :c:struct:`!struct vm_area_struct`
+attributes, each described by a :c:struct:`!struct mm_area`
 object. Userland access outside of VMAs is invalid except in the case where an
 adjacent stack VMA could be extended to contain the accessed address.
 
@@ -142,7 +142,7 @@ obtain either a read or a write lock for each of these.
 VMA fields
 ^^^^^^^^^^
 
-We can subdivide :c:struct:`!struct vm_area_struct` fields by their purpose, which makes it
+We can subdivide :c:struct:`!struct mm_area` fields by their purpose, which makes it
 easier to explore their locking characteristics:
 
 .. note:: We exclude VMA lock-specific fields here to avoid confusion, as these
diff --git a/Documentation/translations/zh_CN/core-api/cachetlb.rst b/Documentation/translations/zh_CN/core-api/cachetlb.rst
index 64295c61d1c1..96eefda0262e 100644
--- a/Documentation/translations/zh_CN/core-api/cachetlb.rst
+++ b/Documentation/translations/zh_CN/core-api/cachetlb.rst
@@ -51,7 +51,7 @@ cpu上对这个地址空间进行刷新。
 	这个接口被用来处理整个地址空间的页表操作,比如在fork和exec过程
 	中发生的事情。
 
-3) ``void flush_tlb_range(struct vm_area_struct *vma,
+3) ``void flush_tlb_range(struct mm_area *vma,
    unsigned long start, unsigned long end)``
 
 	这里我们要从TLB中刷新一个特定范围的(用户)虚拟地址转换。在运行后,
@@ -65,7 +65,7 @@ cpu上对这个地址空间进行刷新。
 	个页面大小的转换,而不是让内核为每个可能被修改的页表项调用
 	flush_tlb_page(见下文)。
 
-4) ``void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)``
+4) ``void flush_tlb_page(struct mm_area *vma, unsigned long addr)``
 
 	这一次我们需要从TLB中删除PAGE_SIZE大小的转换。‘vma’是Linux用来跟
 	踪进程的mmap区域的支持结构体,地址空间可以通过vma->vm_mm获得。另
@@ -78,7 +78,7 @@ cpu上对这个地址空间进行刷新。
 
 	这主要是在故障处理时使用。
 
-5) ``void update_mmu_cache(struct vm_area_struct *vma,
+5) ``void update_mmu_cache(struct mm_area *vma,
    unsigned long address, pte_t *ptep)``
 
 	在每个缺页异常结束时,这个程序被调用,以告诉体系结构特定的代码,在
@@ -134,7 +134,7 @@ HyperSparc cpu就是这样一个具有这种属性的cpu。
 
 	这个选项与flush_cache_mm分开,以允许对VIPT缓存进行一些优化。
 
-3) ``void flush_cache_range(struct vm_area_struct *vma,
+3) ``void flush_cache_range(struct mm_area *vma,
    unsigned long start, unsigned long end)``
 
 	在这里,我们要从缓存中刷新一个特定范围的(用户)虚拟地址。运行
@@ -147,7 +147,7 @@ HyperSparc cpu就是这样一个具有这种属性的cpu。
 	除多个页面大小的区域, 而不是让内核为每个可能被修改的页表项调
 	用 flush_cache_page (见下文)。
 
-4) ``void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn)``
+4) ``void flush_cache_page(struct mm_area *vma, unsigned long addr, unsigned long pfn)``
 
 	这一次我们需要从缓存中删除一个PAGE_SIZE大小的区域。“vma”是
 	Linux用来跟踪进程的mmap区域的支持结构体,地址空间可以通过
@@ -284,9 +284,9 @@ HyperSparc cpu就是这样一个具有这种属性的cpu。
 	该函数的调用情形与flush_dcache_page()相同。它允许架构针对刷新整个
 	folio页面进行优化,而不是一次刷新一页。
 
-  ``void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+  ``void copy_to_user_page(struct mm_area *vma, struct page *page,
   unsigned long user_vaddr, void *dst, void *src, int len)``
-  ``void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
+  ``void copy_from_user_page(struct mm_area *vma, struct page *page,
   unsigned long user_vaddr, void *dst, void *src, int len)``
 
 	当内核需要复制任意的数据进出任意的用户页时(比如ptrace()),它将使
@@ -296,7 +296,7 @@ HyperSparc cpu就是这样一个具有这种属性的cpu。
 	处理器的指令缓存没有对cpu存储进行窥探,那么你很可能需要为
 	copy_to_user_page()刷新指令缓存。
 
-  ``void flush_anon_page(struct vm_area_struct *vma, struct page *page,
+  ``void flush_anon_page(struct mm_area *vma, struct page *page,
   unsigned long vmaddr)``
 
 	当内核需要访问一个匿名页的内容时,它会调用这个函数(目前只有
@@ -310,7 +310,7 @@ HyperSparc cpu就是这样一个具有这种属性的cpu。
 
 	如果icache不对存储进行窥探,那么这个程序将需要对其进行刷新。
 
-  ``void flush_icache_page(struct vm_area_struct *vma, struct page *page)``
+  ``void flush_icache_page(struct mm_area *vma, struct page *page)``
 
 	flush_icache_page的所有功能都可以在flush_dcache_page和update_mmu_cache
 	中实现。在未来,我们希望能够完全删除这个接口。
diff --git a/Documentation/translations/zh_CN/mm/hmm.rst b/Documentation/translations/zh_CN/mm/hmm.rst
index 22c210f4e94f..ad4e2847b119 100644
--- a/Documentation/translations/zh_CN/mm/hmm.rst
+++ b/Documentation/translations/zh_CN/mm/hmm.rst
@@ -247,7 +247,7 @@ devm_memunmap_pages() 和 devm_release_mem_region() 当资源可以绑定到 ``s
 
 1. ``mmap_read_lock()``
 
-   设备驱动程序必须将 ``struct vm_area_struct`` 传递给migrate_vma_setup(),
+   设备驱动程序必须将 ``struct mm_area`` 传递给migrate_vma_setup(),
    因此需要在迁移期间保留 mmap_read_lock() 或 mmap_write_lock()。
 
 2. ``migrate_vma_setup(struct migrate_vma *args)``
diff --git a/Documentation/translations/zh_CN/mm/hugetlbfs_reserv.rst b/Documentation/translations/zh_CN/mm/hugetlbfs_reserv.rst
index 20947f8bd065..b85b68f3afd4 100644
--- a/Documentation/translations/zh_CN/mm/hugetlbfs_reserv.rst
+++ b/Documentation/translations/zh_CN/mm/hugetlbfs_reserv.rst
@@ -95,7 +95,7 @@ Page Flags
 
 	int hugetlb_reserve_pages(struct inode *inode,
 				  long from, long to,
-				  struct vm_area_struct *vma,
+				  struct mm_area *vma,
 				  vm_flags_t vm_flags)
 
 hugetlb_reserve_pages()做的第一件事是检查在调用shmget()或mmap()时是否指定了NORESERVE
@@ -146,7 +146,7 @@ HPAGE_RESV_OWNER标志被设置,以表明该VMA拥有预留。
 当与预留相关的巨页在相应的映射中被分配和实例化时,预留就被消耗了。该分配是在函数alloc_hugetlb_folio()
 中进行的::
 
-	struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
+	struct folio *alloc_hugetlb_folio(struct mm_area *vma,
 				     unsigned long addr, int avoid_reserve)
 
 alloc_hugetlb_folio被传递给一个VMA指针和一个虚拟地址,因此它可以查阅预留映射以确定是否存在预留。
@@ -342,13 +342,13 @@ region_count()在解除私有巨页映射时被调用。在私有映射中,预
 它们确实考虑到了私有和共享映射的预留映射条目的 “相反” 含义,并向调用者隐藏了这个细节::
 
 	long vma_needs_reservation(struct hstate *h,
-				   struct vm_area_struct *vma,
+				   struct mm_area *vma,
 				   unsigned long addr)
 
 该函数为指定的页面调用 region_chg()。如果不存在预留,则返回1。如果存在预留,则返回0::
 
 	long vma_commit_reservation(struct hstate *h,
-				    struct vm_area_struct *vma,
+				    struct mm_area *vma,
 				    unsigned long addr)
 
 这将调用 region_add(),用于指定的页面。与region_chg和region_add的情况一样,该函数应在
@@ -357,14 +357,14 @@ region_count()在解除私有巨页映射时被调用。在私有映射中,预
 现意外的差异,说明在两次调用之间修改了预留映射::
 
 	void vma_end_reservation(struct hstate *h,
-				 struct vm_area_struct *vma,
+				 struct mm_area *vma,
 				 unsigned long addr)
 
 这将调用指定页面的 region_abort()。与region_chg和region_abort的情况一样,该函数应在
 先前调用的vma_needs_reservation后被调用。它将中止/结束正在进行的预留添加操作::
 
 	long vma_add_reservation(struct hstate *h,
-				 struct vm_area_struct *vma,
+				 struct mm_area *vma,
 				 unsigned long addr)
 
 这是一个特殊的包装函数,有助于在错误路径上清理预留。它只从repare_reserve_on_error()函数
diff --git a/Documentation/userspace-api/media/conf_nitpick.py b/Documentation/userspace-api/media/conf_nitpick.py
index 0a8e236d07ab..3704eb6e4e3b 100644
--- a/Documentation/userspace-api/media/conf_nitpick.py
+++ b/Documentation/userspace-api/media/conf_nitpick.py
@@ -103,7 +103,7 @@ nitpick_ignore = [
     ("c:type", "usb_interface"),
     ("c:type", "v4l2_std_id"),
     ("c:type", "video_system_t"),
-    ("c:type", "vm_area_struct"),
+    ("c:type", "mm_area"),
 
     # Opaque structures
 
diff --git a/arch/alpha/include/asm/cacheflush.h b/arch/alpha/include/asm/cacheflush.h
index 36a7e924c3b9..6a9f035ab3c9 100644
--- a/arch/alpha/include/asm/cacheflush.h
+++ b/arch/alpha/include/asm/cacheflush.h
@@ -35,7 +35,7 @@ extern void smp_imb(void);
 
 extern void __load_new_mm_context(struct mm_struct *);
 static inline void
-flush_icache_user_page(struct vm_area_struct *vma, struct page *page,
+flush_icache_user_page(struct mm_area *vma, struct page *page,
 			unsigned long addr, int len)
 {
 	if (vma->vm_flags & VM_EXEC) {
@@ -48,7 +48,7 @@ flush_icache_user_page(struct vm_area_struct *vma, struct page *page,
 }
 #define flush_icache_user_page flush_icache_user_page
 #else /* CONFIG_SMP */
-extern void flush_icache_user_page(struct vm_area_struct *vma,
+extern void flush_icache_user_page(struct mm_area *vma,
 		struct page *page, unsigned long addr, int len);
 #define flush_icache_user_page flush_icache_user_page
 #endif /* CONFIG_SMP */
@@ -57,7 +57,7 @@ extern void flush_icache_user_page(struct vm_area_struct *vma,
  * Both implementations of flush_icache_user_page flush the entire
  * address space, so one call, no matter how many pages.
  */
-static inline void flush_icache_pages(struct vm_area_struct *vma,
+static inline void flush_icache_pages(struct mm_area *vma,
 		struct page *page, unsigned int nr)
 {
 	flush_icache_user_page(vma, page, 0, 0);
diff --git a/arch/alpha/include/asm/machvec.h b/arch/alpha/include/asm/machvec.h
index 490fc880bb3f..964ae4fe2dd3 100644
--- a/arch/alpha/include/asm/machvec.h
+++ b/arch/alpha/include/asm/machvec.h
@@ -16,7 +16,7 @@
 
 struct task_struct;
 struct mm_struct;
-struct vm_area_struct;
+struct mm_area;
 struct linux_hose_info;
 struct pci_dev;
 struct pci_ops;
diff --git a/arch/alpha/include/asm/pci.h b/arch/alpha/include/asm/pci.h
index 6c04fcbdc8ed..d402ba6d7a00 100644
--- a/arch/alpha/include/asm/pci.h
+++ b/arch/alpha/include/asm/pci.h
@@ -82,7 +82,7 @@ extern int pci_legacy_read(struct pci_bus *bus, loff_t port, u32 *val,
 extern int pci_legacy_write(struct pci_bus *bus, loff_t port, u32 val,
 			    size_t count);
 extern int pci_mmap_legacy_page_range(struct pci_bus *bus,
-				      struct vm_area_struct *vma,
+				      struct mm_area *vma,
 				      enum pci_mmap_state mmap_state);
 extern void pci_adjust_legacy_attr(struct pci_bus *bus,
 				   enum pci_mmap_state mmap_type);
diff --git a/arch/alpha/include/asm/pgtable.h b/arch/alpha/include/asm/pgtable.h
index 02e8817a8921..fdb7f661c52a 100644
--- a/arch/alpha/include/asm/pgtable.h
+++ b/arch/alpha/include/asm/pgtable.h
@@ -19,7 +19,7 @@
 #include <asm/setup.h>
 
 struct mm_struct;
-struct vm_area_struct;
+struct mm_area;
 
 /* Certain architectures need to do special things when PTEs
  * within a page table are directly modified.  Thus, the following
@@ -298,13 +298,13 @@ extern pgd_t swapper_pg_dir[1024];
  * The Alpha doesn't have any external MMU info:  the kernel page
  * tables contain all the necessary information.
  */
-extern inline void update_mmu_cache(struct vm_area_struct * vma,
+extern inline void update_mmu_cache(struct mm_area * vma,
 	unsigned long address, pte_t *ptep)
 {
 }
 
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long address,
+		struct mm_area *vma, unsigned long address,
 		pte_t *ptep, unsigned int nr)
 {
 }
diff --git a/arch/alpha/include/asm/tlbflush.h b/arch/alpha/include/asm/tlbflush.h
index ba4b359d6c39..76232c200987 100644
--- a/arch/alpha/include/asm/tlbflush.h
+++ b/arch/alpha/include/asm/tlbflush.h
@@ -26,7 +26,7 @@ ev5_flush_tlb_current(struct mm_struct *mm)
 
 __EXTERN_INLINE void
 ev5_flush_tlb_current_page(struct mm_struct * mm,
-			   struct vm_area_struct *vma,
+			   struct mm_area *vma,
 			   unsigned long addr)
 {
 	if (vma->vm_flags & VM_EXEC)
@@ -81,7 +81,7 @@ flush_tlb_mm(struct mm_struct *mm)
 
 /* Page-granular tlb flush.  */
 static inline void
-flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
+flush_tlb_page(struct mm_area *vma, unsigned long addr)
 {
 	struct mm_struct *mm = vma->vm_mm;
 
@@ -94,7 +94,7 @@ flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
 /* Flush a specified range of user mapping.  On the Alpha we flush
    the whole user tlb.  */
 static inline void
-flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+flush_tlb_range(struct mm_area *vma, unsigned long start,
 		unsigned long end)
 {
 	flush_tlb_mm(vma->vm_mm);
@@ -104,8 +104,8 @@ flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
 
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm(struct mm_struct *);
-extern void flush_tlb_page(struct vm_area_struct *, unsigned long);
-extern void flush_tlb_range(struct vm_area_struct *, unsigned long,
+extern void flush_tlb_page(struct mm_area *, unsigned long);
+extern void flush_tlb_range(struct mm_area *, unsigned long,
 			    unsigned long);
 
 #endif /* CONFIG_SMP */
diff --git a/arch/alpha/kernel/pci-sysfs.c b/arch/alpha/kernel/pci-sysfs.c
index 3048758304b5..ec66bae1cfae 100644
--- a/arch/alpha/kernel/pci-sysfs.c
+++ b/arch/alpha/kernel/pci-sysfs.c
@@ -16,7 +16,7 @@
 #include <linux/pci.h>
 
 static int hose_mmap_page_range(struct pci_controller *hose,
-				struct vm_area_struct *vma,
+				struct mm_area *vma,
 				enum pci_mmap_state mmap_type, int sparse)
 {
 	unsigned long base;
@@ -34,7 +34,7 @@ static int hose_mmap_page_range(struct pci_controller *hose,
 }
 
 static int __pci_mmap_fits(struct pci_dev *pdev, int num,
-			   struct vm_area_struct *vma, int sparse)
+			   struct mm_area *vma, int sparse)
 {
 	unsigned long nr, start, size;
 	int shift = sparse ? 5 : 0;
@@ -56,7 +56,7 @@ static int __pci_mmap_fits(struct pci_dev *pdev, int num,
  * pci_mmap_resource - map a PCI resource into user memory space
  * @kobj: kobject for mapping
  * @attr: struct bin_attribute for the file being mapped
- * @vma: struct vm_area_struct passed into the mmap
+ * @vma: struct mm_area passed into the mmap
  * @sparse: address space type
  *
  * Use the bus mapping routines to map a PCI resource into userspace.
@@ -65,7 +65,7 @@ static int __pci_mmap_fits(struct pci_dev *pdev, int num,
  */
 static int pci_mmap_resource(struct kobject *kobj,
 			     const struct bin_attribute *attr,
-			     struct vm_area_struct *vma, int sparse)
+			     struct mm_area *vma, int sparse)
 {
 	struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));
 	struct resource *res = attr->private;
@@ -94,14 +94,14 @@ static int pci_mmap_resource(struct kobject *kobj,
 
 static int pci_mmap_resource_sparse(struct file *filp, struct kobject *kobj,
 				    const struct bin_attribute *attr,
-				    struct vm_area_struct *vma)
+				    struct mm_area *vma)
 {
 	return pci_mmap_resource(kobj, attr, vma, 1);
 }
 
 static int pci_mmap_resource_dense(struct file *filp, struct kobject *kobj,
 				   const struct bin_attribute *attr,
-				   struct vm_area_struct *vma)
+				   struct mm_area *vma)
 {
 	return pci_mmap_resource(kobj, attr, vma, 0);
 }
@@ -254,7 +254,7 @@ int pci_create_resource_files(struct pci_dev *pdev)
 /* Legacy I/O bus mapping stuff. */
 
 static int __legacy_mmap_fits(struct pci_controller *hose,
-			      struct vm_area_struct *vma,
+			      struct mm_area *vma,
 			      unsigned long res_size, int sparse)
 {
 	unsigned long nr, start, size;
@@ -283,7 +283,7 @@ static inline int has_sparse(struct pci_controller *hose,
 	return base != 0;
 }
 
-int pci_mmap_legacy_page_range(struct pci_bus *bus, struct vm_area_struct *vma,
+int pci_mmap_legacy_page_range(struct pci_bus *bus, struct mm_area *vma,
 			       enum pci_mmap_state mmap_type)
 {
 	struct pci_controller *hose = bus->sysdata;
diff --git a/arch/alpha/kernel/smp.c b/arch/alpha/kernel/smp.c
index ed06367ece57..1f71a076196b 100644
--- a/arch/alpha/kernel/smp.c
+++ b/arch/alpha/kernel/smp.c
@@ -658,7 +658,7 @@ flush_tlb_mm(struct mm_struct *mm)
 EXPORT_SYMBOL(flush_tlb_mm);
 
 struct flush_tlb_page_struct {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm;
 	unsigned long addr;
 };
@@ -676,7 +676,7 @@ ipi_flush_tlb_page(void *x)
 }
 
 void
-flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
+flush_tlb_page(struct mm_area *vma, unsigned long addr)
 {
 	struct flush_tlb_page_struct data;
 	struct mm_struct *mm = vma->vm_mm;
@@ -709,7 +709,7 @@ flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
 EXPORT_SYMBOL(flush_tlb_page);
 
 void
-flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+flush_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	/* On the Alpha we always flush the whole user tlb.  */
 	flush_tlb_mm(vma->vm_mm);
@@ -727,7 +727,7 @@ ipi_flush_icache_page(void *x)
 }
 
 void
-flush_icache_user_page(struct vm_area_struct *vma, struct page *page,
+flush_icache_user_page(struct mm_area *vma, struct page *page,
 			unsigned long addr, int len)
 {
 	struct mm_struct *mm = vma->vm_mm;
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c
index a9816bbc9f34..a65198563de8 100644
--- a/arch/alpha/mm/fault.c
+++ b/arch/alpha/mm/fault.c
@@ -85,7 +85,7 @@ asmlinkage void
 do_page_fault(unsigned long address, unsigned long mmcsr,
 	      long cause, struct pt_regs *regs)
 {
-	struct vm_area_struct * vma;
+	struct mm_area * vma;
 	struct mm_struct *mm = current->mm;
 	const struct exception_table_entry *fixup;
 	int si_code = SEGV_MAPERR;
diff --git a/arch/arc/include/asm/hugepage.h b/arch/arc/include/asm/hugepage.h
index 8a2441670a8f..3f3e305802f6 100644
--- a/arch/arc/include/asm/hugepage.h
+++ b/arch/arc/include/asm/hugepage.h
@@ -61,11 +61,11 @@ static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr,
 	*pmdp = pmd;
 }
 
-extern void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr,
+extern void update_mmu_cache_pmd(struct mm_area *vma, unsigned long addr,
 				 pmd_t *pmd);
 
 #define __HAVE_ARCH_FLUSH_PMD_TLB_RANGE
-extern void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start,
+extern void flush_pmd_tlb_range(struct mm_area *vma, unsigned long start,
 				unsigned long end);
 
 /* We don't have hardware dirty/accessed bits, generic_pmdp_establish is fine.*/
diff --git a/arch/arc/include/asm/page.h b/arch/arc/include/asm/page.h
index def0dfb95b43..bb03a8165e36 100644
--- a/arch/arc/include/asm/page.h
+++ b/arch/arc/include/asm/page.h
@@ -25,13 +25,13 @@
 #define copy_user_page(to, from, vaddr, pg)	copy_page(to, from)
 #define copy_page(to, from)		memcpy((to), (from), PAGE_SIZE)
 
-struct vm_area_struct;
+struct mm_area;
 struct page;
 
 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
 
 void copy_user_highpage(struct page *to, struct page *from,
-			unsigned long u_vaddr, struct vm_area_struct *vma);
+			unsigned long u_vaddr, struct mm_area *vma);
 void clear_user_page(void *to, unsigned long u_vaddr, struct page *page);
 
 typedef struct {
diff --git a/arch/arc/include/asm/pgtable-bits-arcv2.h b/arch/arc/include/asm/pgtable-bits-arcv2.h
index 8ebec1b21d24..80c4759894fc 100644
--- a/arch/arc/include/asm/pgtable-bits-arcv2.h
+++ b/arch/arc/include/asm/pgtable-bits-arcv2.h
@@ -101,7 +101,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
 }
 
 struct vm_fault;
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long address, pte_t *ptep, unsigned int nr);
 
 #define update_mmu_cache(vma, addr, ptep) \
diff --git a/arch/arc/include/asm/tlbflush.h b/arch/arc/include/asm/tlbflush.h
index 992a2837a53f..e442c338f36a 100644
--- a/arch/arc/include/asm/tlbflush.h
+++ b/arch/arc/include/asm/tlbflush.h
@@ -10,12 +10,12 @@
 
 void local_flush_tlb_all(void);
 void local_flush_tlb_mm(struct mm_struct *mm);
-void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
+void local_flush_tlb_page(struct mm_area *vma, unsigned long page);
 void local_flush_tlb_kernel_range(unsigned long start, unsigned long end);
-void local_flush_tlb_range(struct vm_area_struct *vma,
+void local_flush_tlb_range(struct mm_area *vma,
 			   unsigned long start, unsigned long end);
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-void local_flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void local_flush_pmd_tlb_range(struct mm_area *vma, unsigned long start,
 			       unsigned long end);
 #endif
 
@@ -29,14 +29,14 @@ void local_flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start,
 #define flush_pmd_tlb_range(vma, s, e)	local_flush_pmd_tlb_range(vma, s, e)
 #endif
 #else
-extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+extern void flush_tlb_range(struct mm_area *vma, unsigned long start,
 							 unsigned long end);
-extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
+extern void flush_tlb_page(struct mm_area *vma, unsigned long page);
 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm(struct mm_struct *mm);
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-extern void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
+extern void flush_pmd_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end);
 #endif
 #endif /* CONFIG_SMP */
 #endif
diff --git a/arch/arc/kernel/arc_hostlink.c b/arch/arc/kernel/arc_hostlink.c
index 08c5196efe0a..ca695259edde 100644
--- a/arch/arc/kernel/arc_hostlink.c
+++ b/arch/arc/kernel/arc_hostlink.c
@@ -15,7 +15,7 @@
 
 static unsigned char __HOSTLINK__[4 * PAGE_SIZE] __aligned(PAGE_SIZE);
 
-static int arc_hl_mmap(struct file *fp, struct vm_area_struct *vma)
+static int arc_hl_mmap(struct file *fp, struct mm_area *vma)
 {
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 
diff --git a/arch/arc/kernel/troubleshoot.c b/arch/arc/kernel/troubleshoot.c
index c380d8c30704..0e54ebd71f6c 100644
--- a/arch/arc/kernel/troubleshoot.c
+++ b/arch/arc/kernel/troubleshoot.c
@@ -76,7 +76,7 @@ static void print_task_path_n_nm(struct task_struct *tsk)
 
 static void show_faulting_vma(unsigned long address)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *active_mm = current->active_mm;
 
 	/* can't use print_vma_addr() yet as it doesn't check for
diff --git a/arch/arc/mm/cache.c b/arch/arc/mm/cache.c
index 9106ceac323c..29f282d3b006 100644
--- a/arch/arc/mm/cache.c
+++ b/arch/arc/mm/cache.c
@@ -880,7 +880,7 @@ noinline void flush_cache_all(void)
 }
 
 void copy_user_highpage(struct page *to, struct page *from,
-	unsigned long u_vaddr, struct vm_area_struct *vma)
+	unsigned long u_vaddr, struct mm_area *vma)
 {
 	struct folio *src = page_folio(from);
 	struct folio *dst = page_folio(to);
diff --git a/arch/arc/mm/fault.c b/arch/arc/mm/fault.c
index 95119a5e7761..a757e4c1aeca 100644
--- a/arch/arc/mm/fault.c
+++ b/arch/arc/mm/fault.c
@@ -72,7 +72,7 @@ noinline static int handle_kernel_vaddr_fault(unsigned long address)
 
 void do_page_fault(unsigned long address, struct pt_regs *regs)
 {
-	struct vm_area_struct *vma = NULL;
+	struct mm_area *vma = NULL;
 	struct task_struct *tsk = current;
 	struct mm_struct *mm = tsk->mm;
 	int sig, si_code = SEGV_MAPERR;
diff --git a/arch/arc/mm/mmap.c b/arch/arc/mm/mmap.c
index 2185afe8d59f..d43d7ab91d3d 100644
--- a/arch/arc/mm/mmap.c
+++ b/arch/arc/mm/mmap.c
@@ -27,7 +27,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
 		unsigned long flags, vm_flags_t vm_flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct vm_unmapped_area_info info = {};
 
 	/*
diff --git a/arch/arc/mm/tlb.c b/arch/arc/mm/tlb.c
index cae4a7aae0ed..94da2ce6b491 100644
--- a/arch/arc/mm/tlb.c
+++ b/arch/arc/mm/tlb.c
@@ -205,7 +205,7 @@ noinline void local_flush_tlb_mm(struct mm_struct *mm)
  *      without doing any explicit Shootdown
  *  -In case of kernel Flush, entry has to be shot down explicitly
  */
-void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void local_flush_tlb_range(struct mm_area *vma, unsigned long start,
 			   unsigned long end)
 {
 	const unsigned int cpu = smp_processor_id();
@@ -275,7 +275,7 @@ void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
  * NOTE One TLB entry contains translation for single PAGE
  */
 
-void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+void local_flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	const unsigned int cpu = smp_processor_id();
 	unsigned long flags;
@@ -295,7 +295,7 @@ void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
 #ifdef CONFIG_SMP
 
 struct tlb_args {
-	struct vm_area_struct *ta_vma;
+	struct mm_area *ta_vma;
 	unsigned long ta_start;
 	unsigned long ta_end;
 };
@@ -341,7 +341,7 @@ void flush_tlb_mm(struct mm_struct *mm)
 			 mm, 1);
 }
 
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
+void flush_tlb_page(struct mm_area *vma, unsigned long uaddr)
 {
 	struct tlb_args ta = {
 		.ta_vma = vma,
@@ -351,7 +351,7 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
 	on_each_cpu_mask(mm_cpumask(vma->vm_mm), ipi_flush_tlb_page, &ta, 1);
 }
 
-void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void flush_tlb_range(struct mm_area *vma, unsigned long start,
 		     unsigned long end)
 {
 	struct tlb_args ta = {
@@ -364,7 +364,7 @@ void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
 }
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void flush_pmd_tlb_range(struct mm_area *vma, unsigned long start,
 			 unsigned long end)
 {
 	struct tlb_args ta = {
@@ -391,7 +391,7 @@ void flush_tlb_kernel_range(unsigned long start, unsigned long end)
 /*
  * Routine to create a TLB entry
  */
-static void create_tlb(struct vm_area_struct *vma, unsigned long vaddr, pte_t *ptep)
+static void create_tlb(struct mm_area *vma, unsigned long vaddr, pte_t *ptep)
 {
 	unsigned long flags;
 	unsigned int asid_or_sasid, rwx;
@@ -469,7 +469,7 @@ static void create_tlb(struct vm_area_struct *vma, unsigned long vaddr, pte_t *p
  * Note that flush (when done) involves both WBACK - so physical page is
  * in sync as well as INV - so any non-congruent aliases don't remain
  */
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long vaddr_unaligned, pte_t *ptep, unsigned int nr)
 {
 	unsigned long vaddr = vaddr_unaligned & PAGE_MASK;
@@ -527,14 +527,14 @@ void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
  * Thus THP PMD accessors are implemented in terms of PTE (just like sparc)
  */
 
-void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr,
+void update_mmu_cache_pmd(struct mm_area *vma, unsigned long addr,
 				 pmd_t *pmd)
 {
 	pte_t pte = __pte(pmd_val(*pmd));
 	update_mmu_cache_range(NULL, vma, addr, &pte, HPAGE_PMD_NR);
 }
 
-void local_flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void local_flush_pmd_tlb_range(struct mm_area *vma, unsigned long start,
 			       unsigned long end)
 {
 	unsigned int cpu;
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
index 8ed8b9a24efe..ad88660a95c4 100644
--- a/arch/arm/include/asm/cacheflush.h
+++ b/arch/arm/include/asm/cacheflush.h
@@ -165,7 +165,7 @@ extern void dmac_flush_range(const void *, const void *);
  * processes address space.  Really, we want to allow our "user
  * space" model to handle this.
  */
-extern void copy_to_user_page(struct vm_area_struct *, struct page *,
+extern void copy_to_user_page(struct mm_area *, struct page *,
 	unsigned long, void *, const void *, unsigned long);
 #define copy_from_user_page(vma, page, vaddr, dst, src, len) \
 	do {							\
@@ -222,7 +222,7 @@ static inline void vivt_flush_cache_mm(struct mm_struct *mm)
 }
 
 static inline void
-vivt_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+vivt_flush_cache_range(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	struct mm_struct *mm = vma->vm_mm;
 
@@ -231,7 +231,7 @@ vivt_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned
 					vma->vm_flags);
 }
 
-static inline void vivt_flush_cache_pages(struct vm_area_struct *vma,
+static inline void vivt_flush_cache_pages(struct mm_area *vma,
 		unsigned long user_addr, unsigned long pfn, unsigned int nr)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -252,8 +252,8 @@ static inline void vivt_flush_cache_pages(struct vm_area_struct *vma,
 		vivt_flush_cache_pages(vma, addr, pfn, nr)
 #else
 void flush_cache_mm(struct mm_struct *mm);
-void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
-void flush_cache_pages(struct vm_area_struct *vma, unsigned long user_addr,
+void flush_cache_range(struct mm_area *vma, unsigned long start, unsigned long end);
+void flush_cache_pages(struct mm_area *vma, unsigned long user_addr,
 		unsigned long pfn, unsigned int nr);
 #endif
 
@@ -309,10 +309,10 @@ static inline void invalidate_kernel_vmap_range(void *addr, int size)
 }
 
 #define ARCH_HAS_FLUSH_ANON_PAGE
-static inline void flush_anon_page(struct vm_area_struct *vma,
+static inline void flush_anon_page(struct mm_area *vma,
 			 struct page *page, unsigned long vmaddr)
 {
-	extern void __flush_anon_page(struct vm_area_struct *vma,
+	extern void __flush_anon_page(struct mm_area *vma,
 				struct page *, unsigned long);
 	if (PageAnon(page))
 		__flush_anon_page(vma, page, vmaddr);
diff --git a/arch/arm/include/asm/page.h b/arch/arm/include/asm/page.h
index ef11b721230e..ba8262198322 100644
--- a/arch/arm/include/asm/page.h
+++ b/arch/arm/include/asm/page.h
@@ -102,34 +102,34 @@
 #endif
 
 struct page;
-struct vm_area_struct;
+struct mm_area;
 
 struct cpu_user_fns {
 	void (*cpu_clear_user_highpage)(struct page *page, unsigned long vaddr);
 	void (*cpu_copy_user_highpage)(struct page *to, struct page *from,
-			unsigned long vaddr, struct vm_area_struct *vma);
+			unsigned long vaddr, struct mm_area *vma);
 };
 
 void fa_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma);
+	unsigned long vaddr, struct mm_area *vma);
 void fa_clear_user_highpage(struct page *page, unsigned long vaddr);
 void feroceon_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma);
+	unsigned long vaddr, struct mm_area *vma);
 void feroceon_clear_user_highpage(struct page *page, unsigned long vaddr);
 void v4_mc_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma);
+	unsigned long vaddr, struct mm_area *vma);
 void v4_mc_clear_user_highpage(struct page *page, unsigned long vaddr);
 void v4wb_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma);
+	unsigned long vaddr, struct mm_area *vma);
 void v4wb_clear_user_highpage(struct page *page, unsigned long vaddr);
 void v4wt_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma);
+	unsigned long vaddr, struct mm_area *vma);
 void v4wt_clear_user_highpage(struct page *page, unsigned long vaddr);
 void xsc3_mc_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma);
+	unsigned long vaddr, struct mm_area *vma);
 void xsc3_mc_clear_user_highpage(struct page *page, unsigned long vaddr);
 void xscale_mc_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma);
+	unsigned long vaddr, struct mm_area *vma);
 void xscale_mc_clear_user_highpage(struct page *page, unsigned long vaddr);
 
 #ifdef MULTI_USER
@@ -145,7 +145,7 @@ extern struct cpu_user_fns cpu_user;
 
 extern void __cpu_clear_user_highpage(struct page *page, unsigned long vaddr);
 extern void __cpu_copy_user_highpage(struct page *to, struct page *from,
-			unsigned long vaddr, struct vm_area_struct *vma);
+			unsigned long vaddr, struct mm_area *vma);
 #endif
 
 #define clear_user_highpage(page,vaddr)		\
diff --git a/arch/arm/include/asm/tlbflush.h b/arch/arm/include/asm/tlbflush.h
index 38c6e4a2a0b6..401ec430d0fd 100644
--- a/arch/arm/include/asm/tlbflush.h
+++ b/arch/arm/include/asm/tlbflush.h
@@ -205,7 +205,7 @@
 #include <linux/sched.h>
 
 struct cpu_tlb_fns {
-	void (*flush_user_range)(unsigned long, unsigned long, struct vm_area_struct *);
+	void (*flush_user_range)(unsigned long, unsigned long, struct mm_area *);
 	void (*flush_kern_range)(unsigned long, unsigned long);
 	unsigned long tlb_flags;
 };
@@ -223,7 +223,7 @@ struct cpu_tlb_fns {
 #define __cpu_flush_user_tlb_range	__glue(_TLB,_flush_user_tlb_range)
 #define __cpu_flush_kern_tlb_range	__glue(_TLB,_flush_kern_tlb_range)
 
-extern void __cpu_flush_user_tlb_range(unsigned long, unsigned long, struct vm_area_struct *);
+extern void __cpu_flush_user_tlb_range(unsigned long, unsigned long, struct mm_area *);
 extern void __cpu_flush_kern_tlb_range(unsigned long, unsigned long);
 
 #endif
@@ -264,7 +264,7 @@ extern struct cpu_tlb_fns cpu_tlb;
  *	flush_tlb_page(vma, uaddr)
  *
  *		Invalidate the specified page in the specified address range.
- *		- vma	- vm_area_struct describing address range
+ *		- vma	- mm_area describing address range
  *		- vaddr - virtual address (may not be aligned)
  */
 
@@ -410,7 +410,7 @@ static inline void __flush_tlb_mm(struct mm_struct *mm)
 }
 
 static inline void
-__local_flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
+__local_flush_tlb_page(struct mm_area *vma, unsigned long uaddr)
 {
 	const int zero = 0;
 	const unsigned int __tlb_flag = __cpu_tlb_flags;
@@ -432,7 +432,7 @@ __local_flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
 }
 
 static inline void
-local_flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
+local_flush_tlb_page(struct mm_area *vma, unsigned long uaddr)
 {
 	const unsigned int __tlb_flag = __cpu_tlb_flags;
 
@@ -449,7 +449,7 @@ local_flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
 }
 
 static inline void
-__flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
+__flush_tlb_page(struct mm_area *vma, unsigned long uaddr)
 {
 	const unsigned int __tlb_flag = __cpu_tlb_flags;
 
@@ -608,9 +608,9 @@ static inline void clean_pmd_entry(void *pmd)
 #else
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm(struct mm_struct *mm);
-extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr);
+extern void flush_tlb_page(struct mm_area *vma, unsigned long uaddr);
 extern void flush_tlb_kernel_page(unsigned long kaddr);
-extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
+extern void flush_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end);
 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
 extern void flush_bp_all(void);
 #endif
@@ -622,11 +622,11 @@ extern void flush_bp_all(void);
  * the set_ptes() function.
  */
 #if __LINUX_ARM_ARCH__ < 6
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long addr, pte_t *ptep, unsigned int nr);
 #else
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long addr, pte_t *ptep,
+		struct mm_area *vma, unsigned long addr, pte_t *ptep,
 		unsigned int nr)
 {
 }
@@ -644,17 +644,17 @@ static inline void update_mmu_cache_range(struct vm_fault *vmf,
 #ifndef __ASSEMBLY__
 static inline void local_flush_tlb_all(void)									{ }
 static inline void local_flush_tlb_mm(struct mm_struct *mm)							{ }
-static inline void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)			{ }
+static inline void local_flush_tlb_page(struct mm_area *vma, unsigned long uaddr)			{ }
 static inline void local_flush_tlb_kernel_page(unsigned long kaddr)						{ }
-static inline void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)	{ }
+static inline void local_flush_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end)	{ }
 static inline void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)				{ }
 static inline void local_flush_bp_all(void)									{ }
 
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm(struct mm_struct *mm);
-extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr);
+extern void flush_tlb_page(struct mm_area *vma, unsigned long uaddr);
 extern void flush_tlb_kernel_page(unsigned long kaddr);
-extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
+extern void flush_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end);
 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
 extern void flush_bp_all(void);
 #endif	/* __ASSEMBLY__ */
diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c
index 123f4a8ef446..026d60dfd19e 100644
--- a/arch/arm/kernel/asm-offsets.c
+++ b/arch/arm/kernel/asm-offsets.c
@@ -106,8 +106,8 @@ int main(void)
   DEFINE(MM_CONTEXT_ID,		offsetof(struct mm_struct, context.id.counter));
   BLANK();
 #endif
-  DEFINE(VMA_VM_MM,		offsetof(struct vm_area_struct, vm_mm));
-  DEFINE(VMA_VM_FLAGS,		offsetof(struct vm_area_struct, vm_flags));
+  DEFINE(VMA_VM_MM,		offsetof(struct mm_area, vm_mm));
+  DEFINE(VMA_VM_FLAGS,		offsetof(struct mm_area, vm_flags));
   BLANK();
   DEFINE(VM_EXEC,	       	VM_EXEC);
   BLANK();
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index e16ed102960c..d35d4687e6a8 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -306,7 +306,7 @@ unsigned long __get_wchan(struct task_struct *p)
  * atomic helpers. Insert it into the gate_vma so that it is visible
  * through ptrace and /proc/<pid>/mem.
  */
-static struct vm_area_struct gate_vma;
+static struct mm_area gate_vma;
 
 static int __init gate_vma_init(void)
 {
@@ -319,7 +319,7 @@ static int __init gate_vma_init(void)
 }
 arch_initcall(gate_vma_init);
 
-struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
+struct mm_area *get_gate_vma(struct mm_struct *mm)
 {
 	return &gate_vma;
 }
@@ -338,7 +338,7 @@ int in_gate_area_no_mm(unsigned long addr)
 #define is_gate_vma(vma)	0
 #endif
 
-const char *arch_vma_name(struct vm_area_struct *vma)
+const char *arch_vma_name(struct mm_area *vma)
 {
 	return is_gate_vma(vma) ? "[vectors]" : NULL;
 }
@@ -380,7 +380,7 @@ static struct page *signal_page;
 extern struct page *get_signal_page(void);
 
 static int sigpage_mremap(const struct vm_special_mapping *sm,
-		struct vm_area_struct *new_vma)
+		struct mm_area *new_vma)
 {
 	current->mm->context.sigpage = new_vma->vm_start;
 	return 0;
@@ -395,7 +395,7 @@ static const struct vm_special_mapping sigpage_mapping = {
 int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long npages;
 	unsigned long addr;
 	unsigned long hint;
diff --git a/arch/arm/kernel/smp_tlb.c b/arch/arm/kernel/smp_tlb.c
index d4908b3736d8..d827500c7538 100644
--- a/arch/arm/kernel/smp_tlb.c
+++ b/arch/arm/kernel/smp_tlb.c
@@ -18,7 +18,7 @@
  * TLB operations
  */
 struct tlb_args {
-	struct vm_area_struct *ta_vma;
+	struct mm_area *ta_vma;
 	unsigned long ta_start;
 	unsigned long ta_end;
 };
@@ -193,7 +193,7 @@ void flush_tlb_mm(struct mm_struct *mm)
 	broadcast_tlb_mm_a15_erratum(mm);
 }
 
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
+void flush_tlb_page(struct mm_area *vma, unsigned long uaddr)
 {
 	if (tlb_ops_need_broadcast()) {
 		struct tlb_args ta;
@@ -217,7 +217,7 @@ void flush_tlb_kernel_page(unsigned long kaddr)
 	broadcast_tlb_a15_erratum();
 }
 
-void flush_tlb_range(struct vm_area_struct *vma,
+void flush_tlb_range(struct mm_area *vma,
                      unsigned long start, unsigned long end)
 {
 	if (tlb_ops_need_broadcast()) {
diff --git a/arch/arm/kernel/vdso.c b/arch/arm/kernel/vdso.c
index 325448ffbba0..97b28ef9742a 100644
--- a/arch/arm/kernel/vdso.c
+++ b/arch/arm/kernel/vdso.c
@@ -35,7 +35,7 @@ extern char vdso_start[], vdso_end[];
 unsigned int vdso_total_pages __ro_after_init;
 
 static int vdso_mremap(const struct vm_special_mapping *sm,
-		struct vm_area_struct *new_vma)
+		struct mm_area *new_vma)
 {
 	current->mm->context.vdso = new_vma->vm_start;
 
@@ -210,7 +210,7 @@ static_assert(__VDSO_PAGES == VDSO_NR_PAGES);
 /* assumes mmap_lock is write-locked */
 void arm_install_vdso(struct mm_struct *mm, unsigned long addr)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long len;
 
 	mm->context.vdso = 0;
diff --git a/arch/arm/mach-rpc/ecard.c b/arch/arm/mach-rpc/ecard.c
index 2cde4c83b7f9..08d17ee66891 100644
--- a/arch/arm/mach-rpc/ecard.c
+++ b/arch/arm/mach-rpc/ecard.c
@@ -213,7 +213,7 @@ static DEFINE_MUTEX(ecard_mutex);
  */
 static void ecard_init_pgtables(struct mm_struct *mm)
 {
-	struct vm_area_struct vma = TLB_FLUSH_VMA(mm, VM_EXEC);
+	struct mm_area vma = TLB_FLUSH_VMA(mm, VM_EXEC);
 
 	/* We want to set up the page tables for the following mapping:
 	 *  Virtual	Physical
diff --git a/arch/arm/mm/cache-v6.S b/arch/arm/mm/cache-v6.S
index 9f415476e218..560bf185d275 100644
--- a/arch/arm/mm/cache-v6.S
+++ b/arch/arm/mm/cache-v6.S
@@ -94,7 +94,7 @@ SYM_FUNC_END(v6_flush_user_cache_all)
  *
  *	- start - start address (may not be aligned)
  *	- end   - end address (exclusive, may not be aligned)
- *	- flags	- vm_area_struct flags describing address space
+ *	- flags	- mm_area flags describing address space
  *
  *	It is assumed that:
  *	- we have a VIPT cache.
diff --git a/arch/arm/mm/cache-v7.S b/arch/arm/mm/cache-v7.S
index 201ca05436fa..c3d5c874c895 100644
--- a/arch/arm/mm/cache-v7.S
+++ b/arch/arm/mm/cache-v7.S
@@ -238,7 +238,7 @@ SYM_FUNC_END(v7_flush_user_cache_all)
  *
  *	- start - start address (may not be aligned)
  *	- end   - end address (exclusive, may not be aligned)
- *	- flags	- vm_area_struct flags describing address space
+ *	- flags	- mm_area flags describing address space
  *
  *	It is assumed that:
  *	- we have a VIPT cache.
diff --git a/arch/arm/mm/cache-v7m.S b/arch/arm/mm/cache-v7m.S
index 14d719eba729..611e0c7c4875 100644
--- a/arch/arm/mm/cache-v7m.S
+++ b/arch/arm/mm/cache-v7m.S
@@ -263,7 +263,7 @@ SYM_FUNC_END(v7m_flush_user_cache_all)
  *
  *	- start - start address (may not be aligned)
  *	- end   - end address (exclusive, may not be aligned)
- *	- flags	- vm_area_struct flags describing address space
+ *	- flags	- mm_area flags describing address space
  *
  *	It is assumed that:
  *	- we have a VIPT cache.
diff --git a/arch/arm/mm/copypage-fa.c b/arch/arm/mm/copypage-fa.c
index 7e28c26f5aa4..6620d7e4ef45 100644
--- a/arch/arm/mm/copypage-fa.c
+++ b/arch/arm/mm/copypage-fa.c
@@ -36,7 +36,7 @@ static void fa_copy_user_page(void *kto, const void *kfrom)
 }
 
 void fa_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	void *kto, *kfrom;
 
diff --git a/arch/arm/mm/copypage-feroceon.c b/arch/arm/mm/copypage-feroceon.c
index 5fc8ef1e665f..c2b763bb8b94 100644
--- a/arch/arm/mm/copypage-feroceon.c
+++ b/arch/arm/mm/copypage-feroceon.c
@@ -64,7 +64,7 @@ static void feroceon_copy_user_page(void *kto, const void *kfrom)
 }
 
 void feroceon_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	void *kto, *kfrom;
 
diff --git a/arch/arm/mm/copypage-v4mc.c b/arch/arm/mm/copypage-v4mc.c
index 7ddd82b9fe8b..c151e91373b7 100644
--- a/arch/arm/mm/copypage-v4mc.c
+++ b/arch/arm/mm/copypage-v4mc.c
@@ -62,7 +62,7 @@ static void mc_copy_user_page(void *from, void *to)
 }
 
 void v4_mc_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	struct folio *src = page_folio(from);
 	void *kto = kmap_atomic(to);
diff --git a/arch/arm/mm/copypage-v4wb.c b/arch/arm/mm/copypage-v4wb.c
index c3581b226459..04541e74d6a6 100644
--- a/arch/arm/mm/copypage-v4wb.c
+++ b/arch/arm/mm/copypage-v4wb.c
@@ -45,7 +45,7 @@ static void v4wb_copy_user_page(void *kto, const void *kfrom)
 }
 
 void v4wb_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	void *kto, *kfrom;
 
diff --git a/arch/arm/mm/copypage-v4wt.c b/arch/arm/mm/copypage-v4wt.c
index 1fb10733305a..68cafffaeba6 100644
--- a/arch/arm/mm/copypage-v4wt.c
+++ b/arch/arm/mm/copypage-v4wt.c
@@ -41,7 +41,7 @@ static void v4wt_copy_user_page(void *kto, const void *kfrom)
 }
 
 void v4wt_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	void *kto, *kfrom;
 
diff --git a/arch/arm/mm/copypage-v6.c b/arch/arm/mm/copypage-v6.c
index a1a71f36d850..dff1dd0f9e98 100644
--- a/arch/arm/mm/copypage-v6.c
+++ b/arch/arm/mm/copypage-v6.c
@@ -28,7 +28,7 @@ static DEFINE_RAW_SPINLOCK(v6_lock);
  * attack the kernel's existing mapping of these pages.
  */
 static void v6_copy_user_highpage_nonaliasing(struct page *to,
-	struct page *from, unsigned long vaddr, struct vm_area_struct *vma)
+	struct page *from, unsigned long vaddr, struct mm_area *vma)
 {
 	void *kto, *kfrom;
 
@@ -67,7 +67,7 @@ static void discard_old_kernel_data(void *kto)
  * Copy the page, taking account of the cache colour.
  */
 static void v6_copy_user_highpage_aliasing(struct page *to,
-	struct page *from, unsigned long vaddr, struct vm_area_struct *vma)
+	struct page *from, unsigned long vaddr, struct mm_area *vma)
 {
 	struct folio *src = page_folio(from);
 	unsigned int offset = CACHE_COLOUR(vaddr);
diff --git a/arch/arm/mm/copypage-xsc3.c b/arch/arm/mm/copypage-xsc3.c
index c86e79677ff9..4f866b2aba21 100644
--- a/arch/arm/mm/copypage-xsc3.c
+++ b/arch/arm/mm/copypage-xsc3.c
@@ -62,7 +62,7 @@ static void xsc3_mc_copy_user_page(void *kto, const void *kfrom)
 }
 
 void xsc3_mc_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	void *kto, *kfrom;
 
diff --git a/arch/arm/mm/copypage-xscale.c b/arch/arm/mm/copypage-xscale.c
index f1e29d3e8193..dcc5b53e7d8a 100644
--- a/arch/arm/mm/copypage-xscale.c
+++ b/arch/arm/mm/copypage-xscale.c
@@ -82,7 +82,7 @@ static void mc_copy_user_page(void *from, void *to)
 }
 
 void xscale_mc_copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	struct folio *src = page_folio(from);
 	void *kto = kmap_atomic(to);
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index 88c2d68a69c9..88ec2665d5d9 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -1112,7 +1112,7 @@ static void *arm_iommu_alloc_attrs(struct device *dev, size_t size,
 	return NULL;
 }
 
-static int arm_iommu_mmap_attrs(struct device *dev, struct vm_area_struct *vma,
+static int arm_iommu_mmap_attrs(struct device *dev, struct mm_area *vma,
 		    void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		    unsigned long attrs)
 {
diff --git a/arch/arm/mm/fault-armv.c b/arch/arm/mm/fault-armv.c
index 39fd5df73317..4717aa3256bb 100644
--- a/arch/arm/mm/fault-armv.c
+++ b/arch/arm/mm/fault-armv.c
@@ -33,7 +33,7 @@ static pteval_t shared_pte_mask = L_PTE_MT_BUFFERABLE;
  * Therefore those configurations which might call adjust_pte (those
  * without CONFIG_CPU_CACHE_VIPT) cannot support split page_table_lock.
  */
-static int do_adjust_pte(struct vm_area_struct *vma, unsigned long address,
+static int do_adjust_pte(struct mm_area *vma, unsigned long address,
 	unsigned long pfn, pte_t *ptep)
 {
 	pte_t entry = *ptep;
@@ -61,7 +61,7 @@ static int do_adjust_pte(struct vm_area_struct *vma, unsigned long address,
 	return ret;
 }
 
-static int adjust_pte(struct vm_area_struct *vma, unsigned long address,
+static int adjust_pte(struct mm_area *vma, unsigned long address,
 		      unsigned long pfn, bool need_lock)
 {
 	spinlock_t *ptl;
@@ -121,13 +121,13 @@ static int adjust_pte(struct vm_area_struct *vma, unsigned long address,
 }
 
 static void
-make_coherent(struct address_space *mapping, struct vm_area_struct *vma,
+make_coherent(struct address_space *mapping, struct mm_area *vma,
 	      unsigned long addr, pte_t *ptep, unsigned long pfn)
 {
 	const unsigned long pmd_start_addr = ALIGN_DOWN(addr, PMD_SIZE);
 	const unsigned long pmd_end_addr = pmd_start_addr + PMD_SIZE;
 	struct mm_struct *mm = vma->vm_mm;
-	struct vm_area_struct *mpnt;
+	struct mm_area *mpnt;
 	unsigned long offset;
 	pgoff_t pgoff;
 	int aliases = 0;
@@ -184,7 +184,7 @@ make_coherent(struct address_space *mapping, struct vm_area_struct *vma,
  *
  * Note that the pte lock will be held.
  */
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long addr, pte_t *ptep, unsigned int nr)
 {
 	unsigned long pfn = pte_pfn(*ptep);
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c
index ab01b51de559..b89935868510 100644
--- a/arch/arm/mm/fault.c
+++ b/arch/arm/mm/fault.c
@@ -264,7 +264,7 @@ static int __kprobes
 do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int sig, code;
 	vm_fault_t fault;
 	unsigned int flags = FAULT_FLAG_DEFAULT;
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c
index 0749cf8a6637..8b674a426eae 100644
--- a/arch/arm/mm/flush.c
+++ b/arch/arm/mm/flush.c
@@ -76,7 +76,7 @@ void flush_cache_mm(struct mm_struct *mm)
 	}
 }
 
-void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+void flush_cache_range(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	if (cache_is_vivt()) {
 		vivt_flush_cache_range(vma, start, end);
@@ -95,7 +95,7 @@ void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned
 		__flush_icache_all();
 }
 
-void flush_cache_pages(struct vm_area_struct *vma, unsigned long user_addr, unsigned long pfn, unsigned int nr)
+void flush_cache_pages(struct mm_area *vma, unsigned long user_addr, unsigned long pfn, unsigned int nr)
 {
 	if (cache_is_vivt()) {
 		vivt_flush_cache_pages(vma, user_addr, pfn, nr);
@@ -156,7 +156,7 @@ void __flush_ptrace_access(struct page *page, unsigned long uaddr, void *kaddr,
 }
 
 static
-void flush_ptrace_access(struct vm_area_struct *vma, struct page *page,
+void flush_ptrace_access(struct mm_area *vma, struct page *page,
 			 unsigned long uaddr, void *kaddr, unsigned long len)
 {
 	unsigned int flags = 0;
@@ -182,7 +182,7 @@ void flush_uprobe_xol_access(struct page *page, unsigned long uaddr,
  *
  * Note that this code needs to run on the current CPU.
  */
-void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_to_user_page(struct mm_area *vma, struct page *page,
 		       unsigned long uaddr, void *dst, const void *src,
 		       unsigned long len)
 {
@@ -238,7 +238,7 @@ void __flush_dcache_folio(struct address_space *mapping, struct folio *folio)
 static void __flush_dcache_aliases(struct address_space *mapping, struct folio *folio)
 {
 	struct mm_struct *mm = current->active_mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	pgoff_t pgoff, pgoff_end;
 
 	/*
@@ -378,8 +378,8 @@ EXPORT_SYMBOL(flush_dcache_page);
  *  memcpy() to/from page
  *  if written to page, flush_dcache_page()
  */
-void __flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr);
-void __flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr)
+void __flush_anon_page(struct mm_area *vma, struct page *page, unsigned long vmaddr);
+void __flush_anon_page(struct mm_area *vma, struct page *page, unsigned long vmaddr)
 {
 	unsigned long pfn;
 
diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c
index 3dbb383c26d5..4077f5184814 100644
--- a/arch/arm/mm/mmap.c
+++ b/arch/arm/mm/mmap.c
@@ -32,7 +32,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
 		unsigned long flags, vm_flags_t vm_flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int do_align = 0;
 	int aliasing = cache_is_vipt_aliasing();
 	struct vm_unmapped_area_info info = {};
@@ -82,7 +82,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
 		        const unsigned long len, const unsigned long pgoff,
 		        const unsigned long flags, vm_flags_t vm_flags)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm = current->mm;
 	unsigned long addr = addr0;
 	int do_align = 0;
diff --git a/arch/arm/mm/nommu.c b/arch/arm/mm/nommu.c
index d638cc87807e..57b8172a4830 100644
--- a/arch/arm/mm/nommu.c
+++ b/arch/arm/mm/nommu.c
@@ -189,7 +189,7 @@ void flush_dcache_page(struct page *page)
 }
 EXPORT_SYMBOL(flush_dcache_page);
 
-void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_to_user_page(struct mm_area *vma, struct page *page,
 		       unsigned long uaddr, void *dst, const void *src,
 		       unsigned long len)
 {
diff --git a/arch/arm/mm/tlb-v6.S b/arch/arm/mm/tlb-v6.S
index 8256a67ac654..d4481f9f0757 100644
--- a/arch/arm/mm/tlb-v6.S
+++ b/arch/arm/mm/tlb-v6.S
@@ -27,7 +27,7 @@
  *
  *	- start - start address (may not be aligned)
  *	- end   - end address (exclusive, may not be aligned)
- *	- vma   - vm_area_struct describing address range
+ *	- vma   - mm_area describing address range
  *
  *	It is assumed that:
  *	- the "Invalidate single entry" instruction will invalidate
diff --git a/arch/arm/mm/tlb-v7.S b/arch/arm/mm/tlb-v7.S
index f1aa0764a2cc..28490bba1cf0 100644
--- a/arch/arm/mm/tlb-v7.S
+++ b/arch/arm/mm/tlb-v7.S
@@ -26,7 +26,7 @@
  *
  *	- start - start address (may not be aligned)
  *	- end   - end address (exclusive, may not be aligned)
- *	- vma   - vm_area_struct describing address range
+ *	- vma   - mm_area describing address range
  *
  *	It is assumed that:
  *	- the "Invalidate single entry" instruction will invalidate
diff --git a/arch/arm/mm/tlb.c b/arch/arm/mm/tlb.c
index 42359793120b..57a2184da8ae 100644
--- a/arch/arm/mm/tlb.c
+++ b/arch/arm/mm/tlb.c
@@ -6,7 +6,7 @@
 #include <asm/tlbflush.h>
 
 #ifdef CONFIG_CPU_TLB_V4WT
-void v4_flush_user_tlb_range(unsigned long, unsigned long, struct vm_area_struct *);
+void v4_flush_user_tlb_range(unsigned long, unsigned long, struct mm_area *);
 void v4_flush_kern_tlb_range(unsigned long, unsigned long);
 
 struct cpu_tlb_fns v4_tlb_fns __initconst = {
@@ -17,7 +17,7 @@ struct cpu_tlb_fns v4_tlb_fns __initconst = {
 #endif
 
 #ifdef CONFIG_CPU_TLB_V4WB
-void v4wb_flush_user_tlb_range(unsigned long, unsigned long, struct vm_area_struct *);
+void v4wb_flush_user_tlb_range(unsigned long, unsigned long, struct mm_area *);
 void v4wb_flush_kern_tlb_range(unsigned long, unsigned long);
 
 struct cpu_tlb_fns v4wb_tlb_fns __initconst = {
@@ -28,7 +28,7 @@ struct cpu_tlb_fns v4wb_tlb_fns __initconst = {
 #endif
 
 #if defined(CONFIG_CPU_TLB_V4WBI) || defined(CONFIG_CPU_TLB_FEROCEON)
-void v4wbi_flush_user_tlb_range(unsigned long, unsigned long, struct vm_area_struct *);
+void v4wbi_flush_user_tlb_range(unsigned long, unsigned long, struct mm_area *);
 void v4wbi_flush_kern_tlb_range(unsigned long, unsigned long);
 
 struct cpu_tlb_fns v4wbi_tlb_fns __initconst = {
@@ -39,7 +39,7 @@ struct cpu_tlb_fns v4wbi_tlb_fns __initconst = {
 #endif
 
 #ifdef CONFIG_CPU_TLB_V6
-void v6wbi_flush_user_tlb_range(unsigned long, unsigned long, struct vm_area_struct *);
+void v6wbi_flush_user_tlb_range(unsigned long, unsigned long, struct mm_area *);
 void v6wbi_flush_kern_tlb_range(unsigned long, unsigned long);
 
 struct cpu_tlb_fns v6wbi_tlb_fns __initconst = {
@@ -50,7 +50,7 @@ struct cpu_tlb_fns v6wbi_tlb_fns __initconst = {
 #endif
 
 #ifdef CONFIG_CPU_TLB_V7
-void v7wbi_flush_user_tlb_range(unsigned long, unsigned long, struct vm_area_struct *);
+void v7wbi_flush_user_tlb_range(unsigned long, unsigned long, struct mm_area *);
 void v7wbi_flush_kern_tlb_range(unsigned long, unsigned long);
 
 struct cpu_tlb_fns v7wbi_tlb_fns __initconst = {
@@ -73,7 +73,7 @@ asm("	.pushsection	\".alt.smp.init\", \"a\"		\n" \
 #endif
 
 #ifdef CONFIG_CPU_TLB_FA
-void fa_flush_user_tlb_range(unsigned long, unsigned long, struct vm_area_struct *);
+void fa_flush_user_tlb_range(unsigned long, unsigned long, struct mm_area *);
 void fa_flush_kern_tlb_range(unsigned long, unsigned long);
 
 struct cpu_tlb_fns fa_tlb_fns __initconst = {
diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c
index a395b6c0aae2..11029e2a5413 100644
--- a/arch/arm/xen/enlighten.c
+++ b/arch/arm/xen/enlighten.c
@@ -68,7 +68,7 @@ static __read_mostly phys_addr_t xen_grant_frames;
 uint32_t xen_start_flags;
 EXPORT_SYMBOL(xen_start_flags);
 
-int xen_unmap_domain_gfn_range(struct vm_area_struct *vma,
+int xen_unmap_domain_gfn_range(struct mm_area *vma,
 			       int nr, struct page **pages)
 {
 	return xen_xlate_unmap_gfn_range(vma, nr, pages);
diff --git a/arch/arm64/include/asm/cacheflush.h b/arch/arm64/include/asm/cacheflush.h
index 28ab96e808ef..aaf770ee6d2f 100644
--- a/arch/arm64/include/asm/cacheflush.h
+++ b/arch/arm64/include/asm/cacheflush.h
@@ -109,7 +109,7 @@ static inline void flush_icache_range(unsigned long start, unsigned long end)
  * processes address space.  Really, we want to allow our "user
  * space" model to handle this.
  */
-extern void copy_to_user_page(struct vm_area_struct *, struct page *,
+extern void copy_to_user_page(struct mm_area *, struct page *,
 	unsigned long, void *, const void *, unsigned long);
 #define copy_to_user_page copy_to_user_page
 
diff --git a/arch/arm64/include/asm/hugetlb.h b/arch/arm64/include/asm/hugetlb.h
index 07fbf5bf85a7..0b84bfffd34e 100644
--- a/arch/arm64/include/asm/hugetlb.h
+++ b/arch/arm64/include/asm/hugetlb.h
@@ -38,7 +38,7 @@ pte_t arch_make_huge_pte(pte_t entry, unsigned int shift, vm_flags_t flags);
 extern void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
 			    pte_t *ptep, pte_t pte, unsigned long sz);
 #define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
-extern int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+extern int huge_ptep_set_access_flags(struct mm_area *vma,
 				      unsigned long addr, pte_t *ptep,
 				      pte_t pte, int dirty);
 #define __HAVE_ARCH_HUGE_PTEP_GET_AND_CLEAR
@@ -48,7 +48,7 @@ extern pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
 extern void huge_ptep_set_wrprotect(struct mm_struct *mm,
 				    unsigned long addr, pte_t *ptep);
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
-extern pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+extern pte_t huge_ptep_clear_flush(struct mm_area *vma,
 				   unsigned long addr, pte_t *ptep);
 #define __HAVE_ARCH_HUGE_PTE_CLEAR
 extern void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
@@ -59,18 +59,18 @@ extern pte_t huge_ptep_get(struct mm_struct *mm, unsigned long addr, pte_t *ptep
 void __init arm64_hugetlb_cma_reserve(void);
 
 #define huge_ptep_modify_prot_start huge_ptep_modify_prot_start
-extern pte_t huge_ptep_modify_prot_start(struct vm_area_struct *vma,
+extern pte_t huge_ptep_modify_prot_start(struct mm_area *vma,
 					 unsigned long addr, pte_t *ptep);
 
 #define huge_ptep_modify_prot_commit huge_ptep_modify_prot_commit
-extern void huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
+extern void huge_ptep_modify_prot_commit(struct mm_area *vma,
 					 unsigned long addr, pte_t *ptep,
 					 pte_t old_pte, pte_t new_pte);
 
 #include <asm-generic/hugetlb.h>
 
 #define __HAVE_ARCH_FLUSH_HUGETLB_TLB_RANGE
-static inline void flush_hugetlb_tlb_range(struct vm_area_struct *vma,
+static inline void flush_hugetlb_tlb_range(struct mm_area *vma,
 					   unsigned long start,
 					   unsigned long end)
 {
diff --git a/arch/arm64/include/asm/mmu_context.h b/arch/arm64/include/asm/mmu_context.h
index 0dbe3b29049b..f0f70fb6934e 100644
--- a/arch/arm64/include/asm/mmu_context.h
+++ b/arch/arm64/include/asm/mmu_context.h
@@ -307,7 +307,7 @@ static inline unsigned long mm_untag_mask(struct mm_struct *mm)
  * Only enforce protection keys on the current process, because there is no
  * user context to access POR_EL0 for another address space.
  */
-static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
+static inline bool arch_vma_access_permitted(struct mm_area *vma,
 		bool write, bool execute, bool foreign)
 {
 	if (!system_supports_poe())
diff --git a/arch/arm64/include/asm/page.h b/arch/arm64/include/asm/page.h
index 2312e6ee595f..d2258e036fae 100644
--- a/arch/arm64/include/asm/page.h
+++ b/arch/arm64/include/asm/page.h
@@ -17,19 +17,19 @@
 #include <asm/pgtable-types.h>
 
 struct page;
-struct vm_area_struct;
+struct mm_area;
 
 extern void copy_page(void *to, const void *from);
 extern void clear_page(void *to);
 
 void copy_user_highpage(struct page *to, struct page *from,
-			unsigned long vaddr, struct vm_area_struct *vma);
+			unsigned long vaddr, struct mm_area *vma);
 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
 
 void copy_highpage(struct page *to, struct page *from);
 #define __HAVE_ARCH_COPY_HIGHPAGE
 
-struct folio *vma_alloc_zeroed_movable_folio(struct vm_area_struct *vma,
+struct folio *vma_alloc_zeroed_movable_folio(struct mm_area *vma,
 						unsigned long vaddr);
 #define vma_alloc_zeroed_movable_folio vma_alloc_zeroed_movable_folio
 
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index d3b538be1500..914caa15c4c8 100644
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
@@ -1207,13 +1207,13 @@ static inline pmd_t pmd_modify(pmd_t pmd, pgprot_t newprot)
 	return pte_pmd(pte_modify(pmd_pte(pmd), newprot));
 }
 
-extern int __ptep_set_access_flags(struct vm_area_struct *vma,
+extern int __ptep_set_access_flags(struct mm_area *vma,
 				 unsigned long address, pte_t *ptep,
 				 pte_t entry, int dirty);
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 #define __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS
-static inline int pmdp_set_access_flags(struct vm_area_struct *vma,
+static inline int pmdp_set_access_flags(struct mm_area *vma,
 					unsigned long address, pmd_t *pmdp,
 					pmd_t entry, int dirty)
 {
@@ -1252,7 +1252,7 @@ static inline bool pud_user_accessible_page(pud_t pud)
 /*
  * Atomic pte/pmd modifications.
  */
-static inline int __ptep_test_and_clear_young(struct vm_area_struct *vma,
+static inline int __ptep_test_and_clear_young(struct mm_area *vma,
 					      unsigned long address,
 					      pte_t *ptep)
 {
@@ -1269,7 +1269,7 @@ static inline int __ptep_test_and_clear_young(struct vm_area_struct *vma,
 	return pte_young(pte);
 }
 
-static inline int __ptep_clear_flush_young(struct vm_area_struct *vma,
+static inline int __ptep_clear_flush_young(struct mm_area *vma,
 					 unsigned long address, pte_t *ptep)
 {
 	int young = __ptep_test_and_clear_young(vma, address, ptep);
@@ -1291,7 +1291,7 @@ static inline int __ptep_clear_flush_young(struct vm_area_struct *vma,
 
 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG)
 #define __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG
-static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
+static inline int pmdp_test_and_clear_young(struct mm_area *vma,
 					    unsigned long address,
 					    pmd_t *pmdp)
 {
@@ -1388,7 +1388,7 @@ static inline void __wrprotect_ptes(struct mm_struct *mm, unsigned long address,
 		__ptep_set_wrprotect(mm, address, ptep);
 }
 
-static inline void __clear_young_dirty_pte(struct vm_area_struct *vma,
+static inline void __clear_young_dirty_pte(struct mm_area *vma,
 					   unsigned long addr, pte_t *ptep,
 					   pte_t pte, cydp_t flags)
 {
@@ -1407,7 +1407,7 @@ static inline void __clear_young_dirty_pte(struct vm_area_struct *vma,
 	} while (pte_val(pte) != pte_val(old_pte));
 }
 
-static inline void __clear_young_dirty_ptes(struct vm_area_struct *vma,
+static inline void __clear_young_dirty_ptes(struct mm_area *vma,
 					    unsigned long addr, pte_t *ptep,
 					    unsigned int nr, cydp_t flags)
 {
@@ -1437,7 +1437,7 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm,
 }
 
 #define pmdp_establish pmdp_establish
-static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
+static inline pmd_t pmdp_establish(struct mm_area *vma,
 		unsigned long address, pmd_t *pmdp, pmd_t pmd)
 {
 	page_table_check_pmd_set(vma->vm_mm, pmdp, pmd);
@@ -1506,7 +1506,7 @@ extern void arch_swap_restore(swp_entry_t entry, struct folio *folio);
  * On AArch64, the cache coherency is handled via the __set_ptes() function.
  */
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long addr, pte_t *ptep,
+		struct mm_area *vma, unsigned long addr, pte_t *ptep,
 		unsigned int nr)
 {
 	/*
@@ -1552,11 +1552,11 @@ static inline bool pud_sect_supported(void)
 
 #define __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION
 #define ptep_modify_prot_start ptep_modify_prot_start
-extern pte_t ptep_modify_prot_start(struct vm_area_struct *vma,
+extern pte_t ptep_modify_prot_start(struct mm_area *vma,
 				    unsigned long addr, pte_t *ptep);
 
 #define ptep_modify_prot_commit ptep_modify_prot_commit
-extern void ptep_modify_prot_commit(struct vm_area_struct *vma,
+extern void ptep_modify_prot_commit(struct mm_area *vma,
 				    unsigned long addr, pte_t *ptep,
 				    pte_t old_pte, pte_t new_pte);
 
@@ -1580,16 +1580,16 @@ extern void contpte_clear_full_ptes(struct mm_struct *mm, unsigned long addr,
 extern pte_t contpte_get_and_clear_full_ptes(struct mm_struct *mm,
 				unsigned long addr, pte_t *ptep,
 				unsigned int nr, int full);
-extern int contpte_ptep_test_and_clear_young(struct vm_area_struct *vma,
+extern int contpte_ptep_test_and_clear_young(struct mm_area *vma,
 				unsigned long addr, pte_t *ptep);
-extern int contpte_ptep_clear_flush_young(struct vm_area_struct *vma,
+extern int contpte_ptep_clear_flush_young(struct mm_area *vma,
 				unsigned long addr, pte_t *ptep);
 extern void contpte_wrprotect_ptes(struct mm_struct *mm, unsigned long addr,
 				pte_t *ptep, unsigned int nr);
-extern int contpte_ptep_set_access_flags(struct vm_area_struct *vma,
+extern int contpte_ptep_set_access_flags(struct mm_area *vma,
 				unsigned long addr, pte_t *ptep,
 				pte_t entry, int dirty);
-extern void contpte_clear_young_dirty_ptes(struct vm_area_struct *vma,
+extern void contpte_clear_young_dirty_ptes(struct mm_area *vma,
 				unsigned long addr, pte_t *ptep,
 				unsigned int nr, cydp_t flags);
 
@@ -1747,7 +1747,7 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm,
 }
 
 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
-static inline int ptep_test_and_clear_young(struct vm_area_struct *vma,
+static inline int ptep_test_and_clear_young(struct mm_area *vma,
 				unsigned long addr, pte_t *ptep)
 {
 	pte_t orig_pte = __ptep_get(ptep);
@@ -1759,7 +1759,7 @@ static inline int ptep_test_and_clear_young(struct vm_area_struct *vma,
 }
 
 #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
-static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
+static inline int ptep_clear_flush_young(struct mm_area *vma,
 				unsigned long addr, pte_t *ptep)
 {
 	pte_t orig_pte = __ptep_get(ptep);
@@ -1802,7 +1802,7 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm,
 }
 
 #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
-static inline int ptep_set_access_flags(struct vm_area_struct *vma,
+static inline int ptep_set_access_flags(struct mm_area *vma,
 				unsigned long addr, pte_t *ptep,
 				pte_t entry, int dirty)
 {
@@ -1817,7 +1817,7 @@ static inline int ptep_set_access_flags(struct vm_area_struct *vma,
 }
 
 #define clear_young_dirty_ptes clear_young_dirty_ptes
-static inline void clear_young_dirty_ptes(struct vm_area_struct *vma,
+static inline void clear_young_dirty_ptes(struct mm_area *vma,
 					  unsigned long addr, pte_t *ptep,
 					  unsigned int nr, cydp_t flags)
 {
diff --git a/arch/arm64/include/asm/pkeys.h b/arch/arm64/include/asm/pkeys.h
index 0ca5f83ce148..14b1d4bfc8c0 100644
--- a/arch/arm64/include/asm/pkeys.h
+++ b/arch/arm64/include/asm/pkeys.h
@@ -20,12 +20,12 @@ static inline bool arch_pkeys_enabled(void)
 	return system_supports_poe();
 }
 
-static inline int vma_pkey(struct vm_area_struct *vma)
+static inline int vma_pkey(struct mm_area *vma)
 {
 	return (vma->vm_flags & ARCH_VM_PKEY_FLAGS) >> VM_PKEY_SHIFT;
 }
 
-static inline int arch_override_mprotect_pkey(struct vm_area_struct *vma,
+static inline int arch_override_mprotect_pkey(struct mm_area *vma,
 		int prot, int pkey)
 {
 	if (pkey != -1)
diff --git a/arch/arm64/include/asm/tlb.h b/arch/arm64/include/asm/tlb.h
index 8d762607285c..31aac313a4b8 100644
--- a/arch/arm64/include/asm/tlb.h
+++ b/arch/arm64/include/asm/tlb.h
@@ -52,7 +52,7 @@ static inline int tlb_get_level(struct mmu_gather *tlb)
 
 static inline void tlb_flush(struct mmu_gather *tlb)
 {
-	struct vm_area_struct vma = TLB_FLUSH_VMA(tlb->mm, 0);
+	struct mm_area vma = TLB_FLUSH_VMA(tlb->mm, 0);
 	bool last_level = !tlb->freed_tables;
 	unsigned long stride = tlb_get_unmap_size(tlb);
 	int tlb_level = tlb_get_level(tlb);
diff --git a/arch/arm64/include/asm/tlbflush.h b/arch/arm64/include/asm/tlbflush.h
index eba1a98657f1..bfed61ba7b05 100644
--- a/arch/arm64/include/asm/tlbflush.h
+++ b/arch/arm64/include/asm/tlbflush.h
@@ -295,13 +295,13 @@ static inline void __flush_tlb_page_nosync(struct mm_struct *mm,
 						(uaddr & PAGE_MASK) + PAGE_SIZE);
 }
 
-static inline void flush_tlb_page_nosync(struct vm_area_struct *vma,
+static inline void flush_tlb_page_nosync(struct mm_area *vma,
 					 unsigned long uaddr)
 {
 	return __flush_tlb_page_nosync(vma->vm_mm, uaddr);
 }
 
-static inline void flush_tlb_page(struct vm_area_struct *vma,
+static inline void flush_tlb_page(struct mm_area *vma,
 				  unsigned long uaddr)
 {
 	flush_tlb_page_nosync(vma, uaddr);
@@ -472,7 +472,7 @@ static inline void __flush_tlb_range_nosync(struct mm_struct *mm,
 	mmu_notifier_arch_invalidate_secondary_tlbs(mm, start, end);
 }
 
-static inline void __flush_tlb_range(struct vm_area_struct *vma,
+static inline void __flush_tlb_range(struct mm_area *vma,
 				     unsigned long start, unsigned long end,
 				     unsigned long stride, bool last_level,
 				     int tlb_level)
@@ -482,7 +482,7 @@ static inline void __flush_tlb_range(struct vm_area_struct *vma,
 	dsb(ish);
 }
 
-static inline void flush_tlb_range(struct vm_area_struct *vma,
+static inline void flush_tlb_range(struct mm_area *vma,
 				   unsigned long start, unsigned long end)
 {
 	/*
diff --git a/arch/arm64/kernel/mte.c b/arch/arm64/kernel/mte.c
index 2fbfd27ff5f2..cc561fb4203d 100644
--- a/arch/arm64/kernel/mte.c
+++ b/arch/arm64/kernel/mte.c
@@ -422,7 +422,7 @@ static int __access_remote_tags(struct mm_struct *mm, unsigned long addr,
 		return -EIO;
 
 	while (len) {
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 		unsigned long tags, offset;
 		void *maddr;
 		struct page *page = get_user_page_vma_remote(mm, addr,
diff --git a/arch/arm64/kernel/vdso.c b/arch/arm64/kernel/vdso.c
index 78ddf6bdecad..5e3564b842a4 100644
--- a/arch/arm64/kernel/vdso.c
+++ b/arch/arm64/kernel/vdso.c
@@ -58,7 +58,7 @@ static struct vdso_abi_info vdso_info[] __ro_after_init = {
 };
 
 static int vdso_mremap(const struct vm_special_mapping *sm,
-		struct vm_area_struct *new_vma)
+		struct mm_area *new_vma)
 {
 	current->mm->context.vdso = (void *)new_vma->vm_start;
 
@@ -157,7 +157,7 @@ static struct page *aarch32_vectors_page __ro_after_init;
 static struct page *aarch32_sig_page __ro_after_init;
 
 static int aarch32_sigpage_mremap(const struct vm_special_mapping *sm,
-				  struct vm_area_struct *new_vma)
+				  struct mm_area *new_vma)
 {
 	current->mm->context.sigpage = (void *)new_vma->vm_start;
 
diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c
index 2feb6c6b63af..54ca059f6a02 100644
--- a/arch/arm64/kvm/mmu.c
+++ b/arch/arm64/kvm/mmu.c
@@ -1017,7 +1017,7 @@ static void stage2_unmap_memslot(struct kvm *kvm,
 	 *     +--------------------------------------------+
 	 */
 	do {
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 		hva_t vm_start, vm_end;
 
 		vma = find_vma_intersection(current->mm, hva, reg_end);
@@ -1393,7 +1393,7 @@ transparent_hugepage_adjust(struct kvm *kvm, struct kvm_memory_slot *memslot,
 	return PAGE_SIZE;
 }
 
-static int get_vma_page_shift(struct vm_area_struct *vma, unsigned long hva)
+static int get_vma_page_shift(struct mm_area *vma, unsigned long hva)
 {
 	unsigned long pa;
 
@@ -1461,7 +1461,7 @@ static void sanitise_mte_tags(struct kvm *kvm, kvm_pfn_t pfn,
 	}
 }
 
-static bool kvm_vma_mte_allowed(struct vm_area_struct *vma)
+static bool kvm_vma_mte_allowed(struct mm_area *vma)
 {
 	return vma->vm_flags & VM_MTE_ALLOWED;
 }
@@ -1478,7 +1478,7 @@ static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
 	unsigned long mmu_seq;
 	phys_addr_t ipa = fault_ipa;
 	struct kvm *kvm = vcpu->kvm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	short vma_shift;
 	void *memcache;
 	gfn_t gfn;
@@ -2190,7 +2190,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
 	 *     +--------------------------------------------+
 	 */
 	do {
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 
 		vma = find_vma_intersection(current->mm, hva, reg_end);
 		if (!vma)
diff --git a/arch/arm64/mm/contpte.c b/arch/arm64/mm/contpte.c
index bcac4f55f9c1..8bec9a656558 100644
--- a/arch/arm64/mm/contpte.c
+++ b/arch/arm64/mm/contpte.c
@@ -49,7 +49,7 @@ static void contpte_try_unfold_partial(struct mm_struct *mm, unsigned long addr,
 static void contpte_convert(struct mm_struct *mm, unsigned long addr,
 			    pte_t *ptep, pte_t pte)
 {
-	struct vm_area_struct vma = TLB_FLUSH_VMA(mm, 0);
+	struct mm_area vma = TLB_FLUSH_VMA(mm, 0);
 	unsigned long start_addr;
 	pte_t *start_ptep;
 	int i;
@@ -297,7 +297,7 @@ pte_t contpte_get_and_clear_full_ptes(struct mm_struct *mm,
 }
 EXPORT_SYMBOL_GPL(contpte_get_and_clear_full_ptes);
 
-int contpte_ptep_test_and_clear_young(struct vm_area_struct *vma,
+int contpte_ptep_test_and_clear_young(struct mm_area *vma,
 					unsigned long addr, pte_t *ptep)
 {
 	/*
@@ -322,7 +322,7 @@ int contpte_ptep_test_and_clear_young(struct vm_area_struct *vma,
 }
 EXPORT_SYMBOL_GPL(contpte_ptep_test_and_clear_young);
 
-int contpte_ptep_clear_flush_young(struct vm_area_struct *vma,
+int contpte_ptep_clear_flush_young(struct mm_area *vma,
 					unsigned long addr, pte_t *ptep)
 {
 	int young;
@@ -361,7 +361,7 @@ void contpte_wrprotect_ptes(struct mm_struct *mm, unsigned long addr,
 }
 EXPORT_SYMBOL_GPL(contpte_wrprotect_ptes);
 
-void contpte_clear_young_dirty_ptes(struct vm_area_struct *vma,
+void contpte_clear_young_dirty_ptes(struct mm_area *vma,
 				    unsigned long addr, pte_t *ptep,
 				    unsigned int nr, cydp_t flags)
 {
@@ -390,7 +390,7 @@ void contpte_clear_young_dirty_ptes(struct vm_area_struct *vma,
 }
 EXPORT_SYMBOL_GPL(contpte_clear_young_dirty_ptes);
 
-int contpte_ptep_set_access_flags(struct vm_area_struct *vma,
+int contpte_ptep_set_access_flags(struct mm_area *vma,
 					unsigned long addr, pte_t *ptep,
 					pte_t entry, int dirty)
 {
diff --git a/arch/arm64/mm/copypage.c b/arch/arm64/mm/copypage.c
index a86c897017df..8bb8e592eab4 100644
--- a/arch/arm64/mm/copypage.c
+++ b/arch/arm64/mm/copypage.c
@@ -61,7 +61,7 @@ void copy_highpage(struct page *to, struct page *from)
 EXPORT_SYMBOL(copy_highpage);
 
 void copy_user_highpage(struct page *to, struct page *from,
-			unsigned long vaddr, struct vm_area_struct *vma)
+			unsigned long vaddr, struct mm_area *vma)
 {
 	copy_highpage(to, from);
 	flush_dcache_page(to);
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index ec0a337891dd..340ac8c5bc25 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -210,7 +210,7 @@ static void show_pte(unsigned long addr)
  *
  * Returns whether or not the PTE actually changed.
  */
-int __ptep_set_access_flags(struct vm_area_struct *vma,
+int __ptep_set_access_flags(struct mm_area *vma,
 			    unsigned long address, pte_t *ptep,
 			    pte_t entry, int dirty)
 {
@@ -487,7 +487,7 @@ static void do_bad_area(unsigned long far, unsigned long esr,
 	}
 }
 
-static bool fault_from_pkey(unsigned long esr, struct vm_area_struct *vma,
+static bool fault_from_pkey(unsigned long esr, struct mm_area *vma,
 			unsigned int mm_flags)
 {
 	unsigned long iss2 = ESR_ELx_ISS2(esr);
@@ -526,7 +526,7 @@ static bool is_write_abort(unsigned long esr)
 	return (esr & ESR_ELx_WNR) && !(esr & ESR_ELx_CM);
 }
 
-static bool is_invalid_gcs_access(struct vm_area_struct *vma, u64 esr)
+static bool is_invalid_gcs_access(struct mm_area *vma, u64 esr)
 {
 	if (!system_supports_gcs())
 		return false;
@@ -552,7 +552,7 @@ static int __kprobes do_page_fault(unsigned long far, unsigned long esr,
 	unsigned long vm_flags;
 	unsigned int mm_flags = FAULT_FLAG_DEFAULT;
 	unsigned long addr = untagged_addr(far);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int si_code;
 	int pkey = -1;
 
@@ -1010,7 +1010,7 @@ NOKPROBE_SYMBOL(do_debug_exception);
 /*
  * Used during anonymous page fault handling.
  */
-struct folio *vma_alloc_zeroed_movable_folio(struct vm_area_struct *vma,
+struct folio *vma_alloc_zeroed_movable_folio(struct mm_area *vma,
 						unsigned long vaddr)
 {
 	gfp_t flags = GFP_HIGHUSER_MOVABLE | __GFP_ZERO;
diff --git a/arch/arm64/mm/flush.c b/arch/arm64/mm/flush.c
index 013eead9b695..4931bb9d9937 100644
--- a/arch/arm64/mm/flush.c
+++ b/arch/arm64/mm/flush.c
@@ -29,7 +29,7 @@ void sync_icache_aliases(unsigned long start, unsigned long end)
 	}
 }
 
-static void flush_ptrace_access(struct vm_area_struct *vma, unsigned long start,
+static void flush_ptrace_access(struct mm_area *vma, unsigned long start,
 				unsigned long end)
 {
 	if (vma->vm_flags & VM_EXEC)
@@ -41,7 +41,7 @@ static void flush_ptrace_access(struct vm_area_struct *vma, unsigned long start,
  * address space.  Really, we want to allow our "user space" model to handle
  * this.
  */
-void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_to_user_page(struct mm_area *vma, struct page *page,
 		       unsigned long uaddr, void *dst, const void *src,
 		       unsigned long len)
 {
diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c
index cfe8cb8ba1cc..55246c6e60d0 100644
--- a/arch/arm64/mm/hugetlbpage.c
+++ b/arch/arm64/mm/hugetlbpage.c
@@ -182,7 +182,7 @@ static pte_t get_clear_contig_flush(struct mm_struct *mm,
 				    unsigned long ncontig)
 {
 	pte_t orig_pte = get_clear_contig(mm, addr, ptep, pgsize, ncontig);
-	struct vm_area_struct vma = TLB_FLUSH_VMA(mm, 0);
+	struct mm_area vma = TLB_FLUSH_VMA(mm, 0);
 
 	flush_tlb_range(&vma, addr, addr + (pgsize * ncontig));
 	return orig_pte;
@@ -203,7 +203,7 @@ static void clear_flush(struct mm_struct *mm,
 			     unsigned long pgsize,
 			     unsigned long ncontig)
 {
-	struct vm_area_struct vma = TLB_FLUSH_VMA(mm, 0);
+	struct mm_area vma = TLB_FLUSH_VMA(mm, 0);
 	unsigned long i, saddr = addr;
 
 	for (i = 0; i < ncontig; i++, addr += pgsize, ptep++)
@@ -244,7 +244,7 @@ void set_huge_pte_at(struct mm_struct *mm, unsigned long addr,
 		__set_ptes(mm, addr, ptep, pfn_pte(pfn, hugeprot), 1);
 }
 
-pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pte_alloc(struct mm_struct *mm, struct mm_area *vma,
 		      unsigned long addr, unsigned long sz)
 {
 	pgd_t *pgdp;
@@ -427,7 +427,7 @@ static int __cont_access_flags_changed(pte_t *ptep, pte_t pte, int ncontig)
 	return 0;
 }
 
-int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+int huge_ptep_set_access_flags(struct mm_area *vma,
 			       unsigned long addr, pte_t *ptep,
 			       pte_t pte, int dirty)
 {
@@ -490,7 +490,7 @@ void huge_ptep_set_wrprotect(struct mm_struct *mm,
 		__set_ptes(mm, addr, ptep, pfn_pte(pfn, hugeprot), 1);
 }
 
-pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+pte_t huge_ptep_clear_flush(struct mm_area *vma,
 			    unsigned long addr, pte_t *ptep)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -534,7 +534,7 @@ bool __init arch_hugetlb_valid_size(unsigned long size)
 	return __hugetlb_valid_size(size);
 }
 
-pte_t huge_ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)
+pte_t huge_ptep_modify_prot_start(struct mm_area *vma, unsigned long addr, pte_t *ptep)
 {
 	unsigned long psize = huge_page_size(hstate_vma(vma));
 
@@ -550,7 +550,7 @@ pte_t huge_ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr
 	return huge_ptep_get_and_clear(vma->vm_mm, addr, ptep, psize);
 }
 
-void huge_ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep,
+void huge_ptep_modify_prot_commit(struct mm_area *vma, unsigned long addr, pte_t *ptep,
 				  pte_t old_pte, pte_t pte)
 {
 	unsigned long psize = huge_page_size(hstate_vma(vma));
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index ea6695d53fb9..4945b810f03c 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -1504,7 +1504,7 @@ static int __init prevent_bootmem_remove_init(void)
 early_initcall(prevent_bootmem_remove_init);
 #endif
 
-pte_t ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)
+pte_t ptep_modify_prot_start(struct mm_area *vma, unsigned long addr, pte_t *ptep)
 {
 	if (alternative_has_cap_unlikely(ARM64_WORKAROUND_2645198)) {
 		/*
@@ -1518,7 +1518,7 @@ pte_t ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr, pte
 	return ptep_get_and_clear(vma->vm_mm, addr, ptep);
 }
 
-void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep,
+void ptep_modify_prot_commit(struct mm_area *vma, unsigned long addr, pte_t *ptep,
 			     pte_t old_pte, pte_t pte)
 {
 	set_pte_at(vma->vm_mm, addr, ptep, pte);
diff --git a/arch/csky/abiv1/cacheflush.c b/arch/csky/abiv1/cacheflush.c
index 171e8fb32285..9253db16358c 100644
--- a/arch/csky/abiv1/cacheflush.c
+++ b/arch/csky/abiv1/cacheflush.c
@@ -41,7 +41,7 @@ void flush_dcache_page(struct page *page)
 }
 EXPORT_SYMBOL(flush_dcache_page);
 
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long addr, pte_t *ptep, unsigned int nr)
 {
 	unsigned long pfn = pte_pfn(*ptep);
@@ -65,7 +65,7 @@ void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
 	}
 }
 
-void flush_cache_range(struct vm_area_struct *vma, unsigned long start,
+void flush_cache_range(struct mm_area *vma, unsigned long start,
 	unsigned long end)
 {
 	dcache_wbinv_all();
diff --git a/arch/csky/abiv1/inc/abi/cacheflush.h b/arch/csky/abiv1/inc/abi/cacheflush.h
index d011a81575d2..be382265c4dc 100644
--- a/arch/csky/abiv1/inc/abi/cacheflush.h
+++ b/arch/csky/abiv1/inc/abi/cacheflush.h
@@ -30,7 +30,7 @@ static inline void invalidate_kernel_vmap_range(void *addr, int size)
 }
 
 #define ARCH_HAS_FLUSH_ANON_PAGE
-static inline void flush_anon_page(struct vm_area_struct *vma,
+static inline void flush_anon_page(struct mm_area *vma,
 			 struct page *page, unsigned long vmaddr)
 {
 	if (PageAnon(page))
@@ -41,7 +41,7 @@ static inline void flush_anon_page(struct vm_area_struct *vma,
  * if (current_mm != vma->mm) cache_wbinv_range(start, end) will be broken.
  * Use cache_wbinv_all() here and need to be improved in future.
  */
-extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
+extern void flush_cache_range(struct mm_area *vma, unsigned long start, unsigned long end);
 #define flush_cache_vmap(start, end)		cache_wbinv_all()
 #define flush_cache_vmap_early(start, end)	do { } while (0)
 #define flush_cache_vunmap(start, end)		cache_wbinv_all()
diff --git a/arch/csky/abiv1/mmap.c b/arch/csky/abiv1/mmap.c
index 1047865e82a9..587ea707e56a 100644
--- a/arch/csky/abiv1/mmap.c
+++ b/arch/csky/abiv1/mmap.c
@@ -27,7 +27,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
 		unsigned long flags, vm_flags_t vm_flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int do_align = 0;
 	struct vm_unmapped_area_info info = {
 		.length = len,
diff --git a/arch/csky/abiv2/cacheflush.c b/arch/csky/abiv2/cacheflush.c
index 876028b1083f..9001fc55ca76 100644
--- a/arch/csky/abiv2/cacheflush.c
+++ b/arch/csky/abiv2/cacheflush.c
@@ -7,7 +7,7 @@
 #include <asm/cache.h>
 #include <asm/tlbflush.h>
 
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long address, pte_t *pte, unsigned int nr)
 {
 	unsigned long pfn = pte_pfn(*pte);
diff --git a/arch/csky/include/asm/page.h b/arch/csky/include/asm/page.h
index 4911d0892b71..bd643891e28a 100644
--- a/arch/csky/include/asm/page.h
+++ b/arch/csky/include/asm/page.h
@@ -43,7 +43,7 @@ struct page;
 
 #include <abi/page.h>
 
-struct vm_area_struct;
+struct mm_area;
 
 typedef struct { unsigned long pte_low; } pte_t;
 #define pte_val(x)	((x).pte_low)
diff --git a/arch/csky/include/asm/pgtable.h b/arch/csky/include/asm/pgtable.h
index a397e1718ab6..17de85d6cae5 100644
--- a/arch/csky/include/asm/pgtable.h
+++ b/arch/csky/include/asm/pgtable.h
@@ -263,7 +263,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
 extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
 extern void paging_init(void);
 
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long address, pte_t *pte, unsigned int nr);
 #define update_mmu_cache(vma, addr, ptep) \
 	update_mmu_cache_range(NULL, vma, addr, ptep, 1)
diff --git a/arch/csky/include/asm/tlbflush.h b/arch/csky/include/asm/tlbflush.h
index 407160b4fde7..1bb6e57ee7a5 100644
--- a/arch/csky/include/asm/tlbflush.h
+++ b/arch/csky/include/asm/tlbflush.h
@@ -14,8 +14,8 @@
  */
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm(struct mm_struct *mm);
-extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
-extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+extern void flush_tlb_page(struct mm_area *vma, unsigned long page);
+extern void flush_tlb_range(struct mm_area *vma, unsigned long start,
 			    unsigned long end);
 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
 
diff --git a/arch/csky/kernel/vdso.c b/arch/csky/kernel/vdso.c
index c54d019d66bc..cb26b07cc994 100644
--- a/arch/csky/kernel/vdso.c
+++ b/arch/csky/kernel/vdso.c
@@ -40,7 +40,7 @@ arch_initcall(vdso_init);
 int arch_setup_additional_pages(struct linux_binprm *bprm,
 	int uses_interp)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm = current->mm;
 	unsigned long vdso_base, vdso_len;
 	int ret;
diff --git a/arch/csky/mm/fault.c b/arch/csky/mm/fault.c
index 5226bc08c336..f64991717a1a 100644
--- a/arch/csky/mm/fault.c
+++ b/arch/csky/mm/fault.c
@@ -168,7 +168,7 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a
 	flush_tlb_one(addr);
 }
 
-static inline bool access_error(struct pt_regs *regs, struct vm_area_struct *vma)
+static inline bool access_error(struct pt_regs *regs, struct mm_area *vma)
 {
 	if (is_write(regs)) {
 		if (!(vma->vm_flags & VM_WRITE))
@@ -187,7 +187,7 @@ static inline bool access_error(struct pt_regs *regs, struct vm_area_struct *vma
 asmlinkage void do_page_fault(struct pt_regs *regs)
 {
 	struct task_struct *tsk;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm;
 	unsigned long addr = read_mmu_entryhi() & PAGE_MASK;
 	unsigned int flags = FAULT_FLAG_DEFAULT;
diff --git a/arch/csky/mm/tlb.c b/arch/csky/mm/tlb.c
index 9234c5e5ceaf..ad8e9be1a714 100644
--- a/arch/csky/mm/tlb.c
+++ b/arch/csky/mm/tlb.c
@@ -49,7 +49,7 @@ do { \
 } while (0)
 #endif
 
-void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void flush_tlb_range(struct mm_area *vma, unsigned long start,
 			unsigned long end)
 {
 	unsigned long newpid = cpu_asid(vma->vm_mm);
@@ -132,7 +132,7 @@ void flush_tlb_kernel_range(unsigned long start, unsigned long end)
 #endif
 }
 
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
+void flush_tlb_page(struct mm_area *vma, unsigned long addr)
 {
 	int newpid = cpu_asid(vma->vm_mm);
 
diff --git a/arch/hexagon/include/asm/cacheflush.h b/arch/hexagon/include/asm/cacheflush.h
index bfff514a81c8..29c492c45995 100644
--- a/arch/hexagon/include/asm/cacheflush.h
+++ b/arch/hexagon/include/asm/cacheflush.h
@@ -59,7 +59,7 @@ extern void flush_cache_all_hexagon(void);
  *
  */
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long address,
+		struct mm_area *vma, unsigned long address,
 		pte_t *ptep, unsigned int nr)
 {
 	/*  generic_ptrace_pokedata doesn't wind up here, does it?  */
@@ -68,7 +68,7 @@ static inline void update_mmu_cache_range(struct vm_fault *vmf,
 #define update_mmu_cache(vma, addr, ptep) \
 	update_mmu_cache_range(NULL, vma, addr, ptep, 1)
 
-void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_to_user_page(struct mm_area *vma, struct page *page,
 		       unsigned long vaddr, void *dst, void *src, int len);
 #define copy_to_user_page copy_to_user_page
 
diff --git a/arch/hexagon/include/asm/tlbflush.h b/arch/hexagon/include/asm/tlbflush.h
index a7c9ab398cab..e79e62a0e132 100644
--- a/arch/hexagon/include/asm/tlbflush.h
+++ b/arch/hexagon/include/asm/tlbflush.h
@@ -23,8 +23,8 @@
  */
 extern void tlb_flush_all(void);
 extern void flush_tlb_mm(struct mm_struct *mm);
-extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr);
-extern void flush_tlb_range(struct vm_area_struct *vma,
+extern void flush_tlb_page(struct mm_area *vma, unsigned long addr);
+extern void flush_tlb_range(struct mm_area *vma,
 				unsigned long start, unsigned long end);
 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
 extern void flush_tlb_one(unsigned long);
diff --git a/arch/hexagon/kernel/vdso.c b/arch/hexagon/kernel/vdso.c
index 8119084dc519..c4728b6e7b05 100644
--- a/arch/hexagon/kernel/vdso.c
+++ b/arch/hexagon/kernel/vdso.c
@@ -51,7 +51,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 {
 	int ret;
 	unsigned long vdso_base;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm = current->mm;
 	static struct vm_special_mapping vdso_mapping = {
 		.name = "[vdso]",
@@ -87,7 +87,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 	return ret;
 }
 
-const char *arch_vma_name(struct vm_area_struct *vma)
+const char *arch_vma_name(struct mm_area *vma)
 {
 	if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
 		return "[vdso]";
diff --git a/arch/hexagon/mm/cache.c b/arch/hexagon/mm/cache.c
index 7e46f40c8b54..c16d16954a28 100644
--- a/arch/hexagon/mm/cache.c
+++ b/arch/hexagon/mm/cache.c
@@ -115,7 +115,7 @@ void flush_cache_all_hexagon(void)
 	mb();
 }
 
-void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_to_user_page(struct mm_area *vma, struct page *page,
 		       unsigned long vaddr, void *dst, void *src, int len)
 {
 	memcpy(dst, src, len);
diff --git a/arch/hexagon/mm/vm_fault.c b/arch/hexagon/mm/vm_fault.c
index 3771fb453898..5eef0342fcaa 100644
--- a/arch/hexagon/mm/vm_fault.c
+++ b/arch/hexagon/mm/vm_fault.c
@@ -36,7 +36,7 @@
  */
 static void do_page_fault(unsigned long address, long cause, struct pt_regs *regs)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm = current->mm;
 	int si_signo;
 	int si_code = SEGV_MAPERR;
diff --git a/arch/hexagon/mm/vm_tlb.c b/arch/hexagon/mm/vm_tlb.c
index 8b6405e2234b..fee2184306a4 100644
--- a/arch/hexagon/mm/vm_tlb.c
+++ b/arch/hexagon/mm/vm_tlb.c
@@ -23,7 +23,7 @@
  * processors must be induced to flush the copies in their local TLBs,
  * but Hexagon thread-based virtual processors share the same MMU.
  */
-void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void flush_tlb_range(struct mm_area *vma, unsigned long start,
 			unsigned long end)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -64,7 +64,7 @@ void flush_tlb_mm(struct mm_struct *mm)
 /*
  * Flush TLB state associated with a page of a vma.
  */
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long vaddr)
+void flush_tlb_page(struct mm_area *vma, unsigned long vaddr)
 {
 	struct mm_struct *mm = vma->vm_mm;
 
diff --git a/arch/loongarch/include/asm/hugetlb.h b/arch/loongarch/include/asm/hugetlb.h
index 4dc4b3e04225..6b92e8c42e37 100644
--- a/arch/loongarch/include/asm/hugetlb.h
+++ b/arch/loongarch/include/asm/hugetlb.h
@@ -48,7 +48,7 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
 }
 
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
-static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+static inline pte_t huge_ptep_clear_flush(struct mm_area *vma,
 					  unsigned long addr, pte_t *ptep)
 {
 	pte_t pte;
@@ -67,7 +67,7 @@ static inline int huge_pte_none(pte_t pte)
 }
 
 #define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
-static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+static inline int huge_ptep_set_access_flags(struct mm_area *vma,
 					     unsigned long addr,
 					     pte_t *ptep, pte_t pte,
 					     int dirty)
diff --git a/arch/loongarch/include/asm/page.h b/arch/loongarch/include/asm/page.h
index 7368f12b7cb1..d58207b68c4b 100644
--- a/arch/loongarch/include/asm/page.h
+++ b/arch/loongarch/include/asm/page.h
@@ -36,9 +36,9 @@ extern void copy_page(void *to, void *from);
 extern unsigned long shm_align_mask;
 
 struct page;
-struct vm_area_struct;
+struct mm_area;
 void copy_user_highpage(struct page *to, struct page *from,
-	      unsigned long vaddr, struct vm_area_struct *vma);
+	      unsigned long vaddr, struct mm_area *vma);
 
 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
 
diff --git a/arch/loongarch/include/asm/pgtable.h b/arch/loongarch/include/asm/pgtable.h
index da346733a1da..8f8764731345 100644
--- a/arch/loongarch/include/asm/pgtable.h
+++ b/arch/loongarch/include/asm/pgtable.h
@@ -63,7 +63,7 @@
 #include <asm/sparsemem.h>
 
 struct mm_struct;
-struct vm_area_struct;
+struct mm_area;
 
 /*
  * ZERO_PAGE is a global shared page that is always zero; used
@@ -438,11 +438,11 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
 		     (pgprot_val(newprot) & ~_PAGE_CHG_MASK));
 }
 
-extern void __update_tlb(struct vm_area_struct *vma,
+extern void __update_tlb(struct mm_area *vma,
 			unsigned long address, pte_t *ptep);
 
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long address,
+		struct mm_area *vma, unsigned long address,
 		pte_t *ptep, unsigned int nr)
 {
 	for (;;) {
@@ -459,7 +459,7 @@ static inline void update_mmu_cache_range(struct vm_fault *vmf,
 #define update_mmu_tlb_range(vma, addr, ptep, nr) \
 	update_mmu_cache_range(NULL, vma, addr, ptep, nr)
 
-static inline void update_mmu_cache_pmd(struct vm_area_struct *vma,
+static inline void update_mmu_cache_pmd(struct mm_area *vma,
 			unsigned long address, pmd_t *pmdp)
 {
 	__update_tlb(vma, address, (pte_t *)pmdp);
diff --git a/arch/loongarch/include/asm/tlb.h b/arch/loongarch/include/asm/tlb.h
index e071f5e9e858..38a860530433 100644
--- a/arch/loongarch/include/asm/tlb.h
+++ b/arch/loongarch/include/asm/tlb.h
@@ -139,7 +139,7 @@ static void tlb_flush(struct mmu_gather *tlb);
 
 static inline void tlb_flush(struct mmu_gather *tlb)
 {
-	struct vm_area_struct vma;
+	struct mm_area vma;
 
 	vma.vm_mm = tlb->mm;
 	vm_flags_init(&vma, 0);
diff --git a/arch/loongarch/include/asm/tlbflush.h b/arch/loongarch/include/asm/tlbflush.h
index a0785e590681..3cab349279d8 100644
--- a/arch/loongarch/include/asm/tlbflush.h
+++ b/arch/loongarch/include/asm/tlbflush.h
@@ -20,18 +20,18 @@ extern void local_flush_tlb_all(void);
 extern void local_flush_tlb_user(void);
 extern void local_flush_tlb_kernel(void);
 extern void local_flush_tlb_mm(struct mm_struct *mm);
-extern void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
+extern void local_flush_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end);
 extern void local_flush_tlb_kernel_range(unsigned long start, unsigned long end);
-extern void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
+extern void local_flush_tlb_page(struct mm_area *vma, unsigned long page);
 extern void local_flush_tlb_one(unsigned long vaddr);
 
 #ifdef CONFIG_SMP
 
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm(struct mm_struct *);
-extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long, unsigned long);
+extern void flush_tlb_range(struct mm_area *vma, unsigned long, unsigned long);
 extern void flush_tlb_kernel_range(unsigned long, unsigned long);
-extern void flush_tlb_page(struct vm_area_struct *, unsigned long);
+extern void flush_tlb_page(struct mm_area *, unsigned long);
 extern void flush_tlb_one(unsigned long vaddr);
 
 #else /* CONFIG_SMP */
diff --git a/arch/loongarch/kernel/smp.c b/arch/loongarch/kernel/smp.c
index 4b24589c0b56..f3cf1633dcc4 100644
--- a/arch/loongarch/kernel/smp.c
+++ b/arch/loongarch/kernel/smp.c
@@ -703,7 +703,7 @@ void flush_tlb_mm(struct mm_struct *mm)
 }
 
 struct flush_tlb_data {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr1;
 	unsigned long addr2;
 };
@@ -715,7 +715,7 @@ static void flush_tlb_range_ipi(void *info)
 	local_flush_tlb_range(fd->vma, fd->addr1, fd->addr2);
 }
 
-void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+void flush_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	struct mm_struct *mm = vma->vm_mm;
 
@@ -764,7 +764,7 @@ static void flush_tlb_page_ipi(void *info)
 	local_flush_tlb_page(fd->vma, fd->addr1);
 }
 
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+void flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	preempt_disable();
 	if ((atomic_read(&vma->vm_mm->mm_users) != 1) || (current->mm != vma->vm_mm)) {
diff --git a/arch/loongarch/kernel/vdso.c b/arch/loongarch/kernel/vdso.c
index 10cf1608c7b3..a33039241859 100644
--- a/arch/loongarch/kernel/vdso.c
+++ b/arch/loongarch/kernel/vdso.c
@@ -25,7 +25,7 @@
 
 extern char vdso_start[], vdso_end[];
 
-static int vdso_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma)
+static int vdso_mremap(const struct vm_special_mapping *sm, struct mm_area *new_vma)
 {
 	current->mm->context.vdso = (void *)(new_vma->vm_start);
 
@@ -79,7 +79,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 	int ret;
 	unsigned long size, data_addr, vdso_addr;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct loongarch_vdso_info *info = current->thread.vdso;
 
 	if (mmap_write_lock_killable(mm))
diff --git a/arch/loongarch/mm/fault.c b/arch/loongarch/mm/fault.c
index deefd9617d00..b61c282fe87b 100644
--- a/arch/loongarch/mm/fault.c
+++ b/arch/loongarch/mm/fault.c
@@ -179,7 +179,7 @@ static void __kprobes __do_page_fault(struct pt_regs *regs,
 	unsigned int flags = FAULT_FLAG_DEFAULT;
 	struct task_struct *tsk = current;
 	struct mm_struct *mm = tsk->mm;
-	struct vm_area_struct *vma = NULL;
+	struct mm_area *vma = NULL;
 	vm_fault_t fault;
 
 	if (kprobe_page_fault(regs, current->thread.trap_nr))
diff --git a/arch/loongarch/mm/hugetlbpage.c b/arch/loongarch/mm/hugetlbpage.c
index e4068906143b..44d9969da492 100644
--- a/arch/loongarch/mm/hugetlbpage.c
+++ b/arch/loongarch/mm/hugetlbpage.c
@@ -13,7 +13,7 @@
 #include <asm/tlb.h>
 #include <asm/tlbflush.h>
 
-pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pte_alloc(struct mm_struct *mm, struct mm_area *vma,
 		      unsigned long addr, unsigned long sz)
 {
 	pgd_t *pgd;
diff --git a/arch/loongarch/mm/init.c b/arch/loongarch/mm/init.c
index fdb7f73ad160..f238502ebed5 100644
--- a/arch/loongarch/mm/init.c
+++ b/arch/loongarch/mm/init.c
@@ -40,7 +40,7 @@ unsigned long empty_zero_page[PAGE_SIZE / sizeof(unsigned long)] __page_aligned_
 EXPORT_SYMBOL(empty_zero_page);
 
 void copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	void *vfrom, *vto;
 
diff --git a/arch/loongarch/mm/mmap.c b/arch/loongarch/mm/mmap.c
index 1df9e99582cc..438f85199a7b 100644
--- a/arch/loongarch/mm/mmap.c
+++ b/arch/loongarch/mm/mmap.c
@@ -23,7 +23,7 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp,
 	unsigned long flags, enum mmap_allocation_direction dir)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr = addr0;
 	int do_color_align;
 	struct vm_unmapped_area_info info = {};
diff --git a/arch/loongarch/mm/tlb.c b/arch/loongarch/mm/tlb.c
index 3b427b319db2..ec386b53110b 100644
--- a/arch/loongarch/mm/tlb.c
+++ b/arch/loongarch/mm/tlb.c
@@ -54,7 +54,7 @@ void local_flush_tlb_mm(struct mm_struct *mm)
 	preempt_enable();
 }
 
-void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void local_flush_tlb_range(struct mm_area *vma, unsigned long start,
 	unsigned long end)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -110,7 +110,7 @@ void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
 	local_irq_restore(flags);
 }
 
-void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+void local_flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	int cpu = smp_processor_id();
 
@@ -135,7 +135,7 @@ void local_flush_tlb_one(unsigned long page)
 	invtlb_addr(INVTLB_ADDR_GTRUE_OR_ASID, 0, page);
 }
 
-static void __update_hugetlb(struct vm_area_struct *vma, unsigned long address, pte_t *ptep)
+static void __update_hugetlb(struct mm_area *vma, unsigned long address, pte_t *ptep)
 {
 #ifdef CONFIG_HUGETLB_PAGE
 	int idx;
@@ -163,7 +163,7 @@ static void __update_hugetlb(struct vm_area_struct *vma, unsigned long address,
 #endif
 }
 
-void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t *ptep)
+void __update_tlb(struct mm_area *vma, unsigned long address, pte_t *ptep)
 {
 	int idx;
 	unsigned long flags;
diff --git a/arch/m68k/include/asm/cacheflush_mm.h b/arch/m68k/include/asm/cacheflush_mm.h
index 9a71b0148461..edf5f643578d 100644
--- a/arch/m68k/include/asm/cacheflush_mm.h
+++ b/arch/m68k/include/asm/cacheflush_mm.h
@@ -204,7 +204,7 @@ static inline void flush_cache_mm(struct mm_struct *mm)
 
 /* flush_cache_range/flush_cache_page must be macros to avoid
    a dependency on linux/mm.h, which includes this file... */
-static inline void flush_cache_range(struct vm_area_struct *vma,
+static inline void flush_cache_range(struct mm_area *vma,
 				     unsigned long start,
 				     unsigned long end)
 {
@@ -212,7 +212,7 @@ static inline void flush_cache_range(struct vm_area_struct *vma,
 	        __flush_cache_030();
 }
 
-static inline void flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long pfn)
+static inline void flush_cache_page(struct mm_area *vma, unsigned long vmaddr, unsigned long pfn)
 {
 	if (vma->vm_mm == current->mm)
 	        __flush_cache_030();
@@ -263,13 +263,13 @@ static inline void __flush_pages_to_ram(void *vaddr, unsigned int nr)
 #define flush_icache_pages(vma, page, nr)	\
 	__flush_pages_to_ram(page_address(page), nr)
 
-extern void flush_icache_user_page(struct vm_area_struct *vma, struct page *page,
+extern void flush_icache_user_page(struct mm_area *vma, struct page *page,
 				    unsigned long addr, int len);
 extern void flush_icache_range(unsigned long address, unsigned long endaddr);
 extern void flush_icache_user_range(unsigned long address,
 		unsigned long endaddr);
 
-static inline void copy_to_user_page(struct vm_area_struct *vma,
+static inline void copy_to_user_page(struct mm_area *vma,
 				     struct page *page, unsigned long vaddr,
 				     void *dst, void *src, int len)
 {
@@ -277,7 +277,7 @@ static inline void copy_to_user_page(struct vm_area_struct *vma,
 	memcpy(dst, src, len);
 	flush_icache_user_page(vma, page, vaddr, len);
 }
-static inline void copy_from_user_page(struct vm_area_struct *vma,
+static inline void copy_from_user_page(struct mm_area *vma,
 				       struct page *page, unsigned long vaddr,
 				       void *dst, void *src, int len)
 {
diff --git a/arch/m68k/include/asm/pgtable_mm.h b/arch/m68k/include/asm/pgtable_mm.h
index dbdf1c2b2f66..fadc4c0e77cc 100644
--- a/arch/m68k/include/asm/pgtable_mm.h
+++ b/arch/m68k/include/asm/pgtable_mm.h
@@ -137,7 +137,7 @@ extern void kernel_set_cachemode(void *addr, unsigned long size, int cmode);
  * they are updated on demand.
  */
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long address,
+		struct mm_area *vma, unsigned long address,
 		pte_t *ptep, unsigned int nr)
 {
 }
diff --git a/arch/m68k/include/asm/tlbflush.h b/arch/m68k/include/asm/tlbflush.h
index 6d42e2906887..925c19068569 100644
--- a/arch/m68k/include/asm/tlbflush.h
+++ b/arch/m68k/include/asm/tlbflush.h
@@ -81,13 +81,13 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
 		__flush_tlb();
 }
 
-static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
+static inline void flush_tlb_page(struct mm_area *vma, unsigned long addr)
 {
 	if (vma->vm_mm == current->active_mm)
 		__flush_tlb_one(addr);
 }
 
-static inline void flush_tlb_range(struct vm_area_struct *vma,
+static inline void flush_tlb_range(struct mm_area *vma,
 				   unsigned long start, unsigned long end)
 {
 	if (vma->vm_mm == current->active_mm)
@@ -161,7 +161,7 @@ static inline void flush_tlb_mm (struct mm_struct *mm)
 
 /* Flush a single TLB page. In this case, we're limited to flushing a
    single PMEG */
-static inline void flush_tlb_page (struct vm_area_struct *vma,
+static inline void flush_tlb_page (struct mm_area *vma,
 				   unsigned long addr)
 {
 	unsigned char oldctx;
@@ -182,7 +182,7 @@ static inline void flush_tlb_page (struct vm_area_struct *vma,
 }
 /* Flush a range of pages from TLB. */
 
-static inline void flush_tlb_range (struct vm_area_struct *vma,
+static inline void flush_tlb_range (struct mm_area *vma,
 		      unsigned long start, unsigned long end)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -252,12 +252,12 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
 	BUG();
 }
 
-static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
+static inline void flush_tlb_page(struct mm_area *vma, unsigned long addr)
 {
 	BUG();
 }
 
-static inline void flush_tlb_range(struct vm_area_struct *vma,
+static inline void flush_tlb_range(struct mm_area *vma,
 				   unsigned long start, unsigned long end)
 {
 	BUG();
diff --git a/arch/m68k/kernel/sys_m68k.c b/arch/m68k/kernel/sys_m68k.c
index 1af5e6082467..cc534ec40930 100644
--- a/arch/m68k/kernel/sys_m68k.c
+++ b/arch/m68k/kernel/sys_m68k.c
@@ -391,7 +391,7 @@ sys_cacheflush (unsigned long addr, int scope, int cache, unsigned long len)
 
 		mmap_read_lock(current->mm);
 	} else {
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 
 		/* Check for overflow.  */
 		if (addr + len < addr)
diff --git a/arch/m68k/mm/cache.c b/arch/m68k/mm/cache.c
index dde978e66f14..2858f1113768 100644
--- a/arch/m68k/mm/cache.c
+++ b/arch/m68k/mm/cache.c
@@ -96,7 +96,7 @@ void flush_icache_range(unsigned long address, unsigned long endaddr)
 }
 EXPORT_SYMBOL(flush_icache_range);
 
-void flush_icache_user_page(struct vm_area_struct *vma, struct page *page,
+void flush_icache_user_page(struct mm_area *vma, struct page *page,
 			     unsigned long addr, int len)
 {
 	if (CPU_IS_COLDFIRE) {
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c
index fa3c5f38d989..af2e500427fd 100644
--- a/arch/m68k/mm/fault.c
+++ b/arch/m68k/mm/fault.c
@@ -71,7 +71,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
 			      unsigned long error_code)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct * vma;
+	struct mm_area * vma;
 	vm_fault_t fault;
 	unsigned int flags = FAULT_FLAG_DEFAULT;
 
diff --git a/arch/microblaze/include/asm/cacheflush.h b/arch/microblaze/include/asm/cacheflush.h
index ffa2cf3893e4..c509ae39fec5 100644
--- a/arch/microblaze/include/asm/cacheflush.h
+++ b/arch/microblaze/include/asm/cacheflush.h
@@ -85,7 +85,7 @@ static inline void flush_dcache_folio(struct folio *folio)
 #define flush_cache_page(vma, vmaddr, pfn) \
 	flush_dcache_range(pfn << PAGE_SHIFT, (pfn << PAGE_SHIFT) + PAGE_SIZE);
 
-static inline void copy_to_user_page(struct vm_area_struct *vma,
+static inline void copy_to_user_page(struct mm_area *vma,
 				     struct page *page, unsigned long vaddr,
 				     void *dst, void *src, int len)
 {
diff --git a/arch/microblaze/include/asm/pgtable.h b/arch/microblaze/include/asm/pgtable.h
index e4ea2ec3642f..659f30da0029 100644
--- a/arch/microblaze/include/asm/pgtable.h
+++ b/arch/microblaze/include/asm/pgtable.h
@@ -336,8 +336,8 @@ static inline void set_pte(pte_t *ptep, pte_t pte)
 }
 
 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
-struct vm_area_struct;
-static inline int ptep_test_and_clear_young(struct vm_area_struct *vma,
+struct mm_area;
+static inline int ptep_test_and_clear_young(struct mm_area *vma,
 		unsigned long address, pte_t *ptep)
 {
 	return (pte_update(ptep, _PAGE_ACCESSED, 0) & _PAGE_ACCESSED) != 0;
diff --git a/arch/microblaze/include/asm/tlbflush.h b/arch/microblaze/include/asm/tlbflush.h
index a31ae9d44083..88e958108295 100644
--- a/arch/microblaze/include/asm/tlbflush.h
+++ b/arch/microblaze/include/asm/tlbflush.h
@@ -24,10 +24,10 @@ static inline void local_flush_tlb_all(void)
 	{ __tlbia(); }
 static inline void local_flush_tlb_mm(struct mm_struct *mm)
 	{ __tlbia(); }
-static inline void local_flush_tlb_page(struct vm_area_struct *vma,
+static inline void local_flush_tlb_page(struct mm_area *vma,
 				unsigned long vmaddr)
 	{ __tlbie(vmaddr); }
-static inline void local_flush_tlb_range(struct vm_area_struct *vma,
+static inline void local_flush_tlb_range(struct mm_area *vma,
 		unsigned long start, unsigned long end)
 	{ __tlbia(); }
 
diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c
index d3c3c33b73a6..3a0d2463eb4a 100644
--- a/arch/microblaze/mm/fault.c
+++ b/arch/microblaze/mm/fault.c
@@ -86,7 +86,7 @@ void bad_page_fault(struct pt_regs *regs, unsigned long address, int sig)
 void do_page_fault(struct pt_regs *regs, unsigned long address,
 		   unsigned long error_code)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm = current->mm;
 	int code = SEGV_MAPERR;
 	int is_write = error_code & ESR_S;
diff --git a/arch/mips/alchemy/common/setup.c b/arch/mips/alchemy/common/setup.c
index a7a6d31a7a41..b10a34b4a2ce 100644
--- a/arch/mips/alchemy/common/setup.c
+++ b/arch/mips/alchemy/common/setup.c
@@ -94,7 +94,7 @@ phys_addr_t fixup_bigphys_addr(phys_addr_t phys_addr, phys_addr_t size)
 	return phys_addr;
 }
 
-int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long vaddr,
+int io_remap_pfn_range(struct mm_area *vma, unsigned long vaddr,
 		unsigned long pfn, unsigned long size, pgprot_t prot)
 {
 	phys_addr_t phys_addr = fixup_bigphys_addr(pfn << PAGE_SHIFT, size);
diff --git a/arch/mips/include/asm/cacheflush.h b/arch/mips/include/asm/cacheflush.h
index 1f14132b3fc9..6a10565c2726 100644
--- a/arch/mips/include/asm/cacheflush.h
+++ b/arch/mips/include/asm/cacheflush.h
@@ -47,9 +47,9 @@ extern void (*flush_cache_all)(void);
 extern void (*__flush_cache_all)(void);
 extern void (*flush_cache_mm)(struct mm_struct *mm);
 #define flush_cache_dup_mm(mm)	do { (void) (mm); } while (0)
-extern void (*flush_cache_range)(struct vm_area_struct *vma,
+extern void (*flush_cache_range)(struct mm_area *vma,
 	unsigned long start, unsigned long end);
-extern void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page, unsigned long pfn);
+extern void (*flush_cache_page)(struct mm_area *vma, unsigned long page, unsigned long pfn);
 extern void __flush_dcache_pages(struct page *page, unsigned int nr);
 
 #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 1
@@ -75,7 +75,7 @@ static inline void flush_dcache_page(struct page *page)
 
 #define ARCH_HAS_FLUSH_ANON_PAGE
 extern void __flush_anon_page(struct page *, unsigned long);
-static inline void flush_anon_page(struct vm_area_struct *vma,
+static inline void flush_anon_page(struct mm_area *vma,
 	struct page *page, unsigned long vmaddr)
 {
 	if (cpu_has_dc_aliases && PageAnon(page))
@@ -107,11 +107,11 @@ static inline void flush_cache_vunmap(unsigned long start, unsigned long end)
 		__flush_cache_vunmap();
 }
 
-extern void copy_to_user_page(struct vm_area_struct *vma,
+extern void copy_to_user_page(struct mm_area *vma,
 	struct page *page, unsigned long vaddr, void *dst, const void *src,
 	unsigned long len);
 
-extern void copy_from_user_page(struct vm_area_struct *vma,
+extern void copy_from_user_page(struct mm_area *vma,
 	struct page *page, unsigned long vaddr, void *dst, const void *src,
 	unsigned long len);
 
diff --git a/arch/mips/include/asm/hugetlb.h b/arch/mips/include/asm/hugetlb.h
index fbc71ddcf0f6..abe7683fc4c4 100644
--- a/arch/mips/include/asm/hugetlb.h
+++ b/arch/mips/include/asm/hugetlb.h
@@ -39,7 +39,7 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
 }
 
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
-static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+static inline pte_t huge_ptep_clear_flush(struct mm_area *vma,
 					  unsigned long addr, pte_t *ptep)
 {
 	pte_t pte;
@@ -63,7 +63,7 @@ static inline int huge_pte_none(pte_t pte)
 }
 
 #define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
-static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+static inline int huge_ptep_set_access_flags(struct mm_area *vma,
 					     unsigned long addr,
 					     pte_t *ptep, pte_t pte,
 					     int dirty)
diff --git a/arch/mips/include/asm/page.h b/arch/mips/include/asm/page.h
index bc3e3484c1bf..5be4423baee8 100644
--- a/arch/mips/include/asm/page.h
+++ b/arch/mips/include/asm/page.h
@@ -91,9 +91,9 @@ static inline void clear_user_page(void *addr, unsigned long vaddr,
 		flush_data_cache_page((unsigned long)addr);
 }
 
-struct vm_area_struct;
+struct mm_area;
 extern void copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma);
+	unsigned long vaddr, struct mm_area *vma);
 
 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
 
diff --git a/arch/mips/include/asm/pgtable.h b/arch/mips/include/asm/pgtable.h
index c29a551eb0ca..ab28b3855dfc 100644
--- a/arch/mips/include/asm/pgtable.h
+++ b/arch/mips/include/asm/pgtable.h
@@ -23,7 +23,7 @@
 #include <asm/cpu-features.h>
 
 struct mm_struct;
-struct vm_area_struct;
+struct mm_area;
 
 #define PAGE_SHARED	vm_get_page_prot(VM_READ|VM_WRITE|VM_SHARED)
 
@@ -478,7 +478,7 @@ static inline pgprot_t pgprot_writecombine(pgprot_t _prot)
 	return __pgprot(prot);
 }
 
-static inline void flush_tlb_fix_spurious_fault(struct vm_area_struct *vma,
+static inline void flush_tlb_fix_spurious_fault(struct mm_area *vma,
 						unsigned long address,
 						pte_t *ptep)
 {
@@ -491,7 +491,7 @@ static inline int pte_same(pte_t pte_a, pte_t pte_b)
 }
 
 #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
-static inline int ptep_set_access_flags(struct vm_area_struct *vma,
+static inline int ptep_set_access_flags(struct mm_area *vma,
 					unsigned long address, pte_t *ptep,
 					pte_t entry, int dirty)
 {
@@ -575,11 +575,11 @@ static inline pte_t pte_swp_clear_exclusive(pte_t pte)
 }
 #endif
 
-extern void __update_tlb(struct vm_area_struct *vma, unsigned long address,
+extern void __update_tlb(struct mm_area *vma, unsigned long address,
 	pte_t pte);
 
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long address,
+		struct mm_area *vma, unsigned long address,
 		pte_t *ptep, unsigned int nr)
 {
 	for (;;) {
@@ -597,7 +597,7 @@ static inline void update_mmu_cache_range(struct vm_fault *vmf,
 #define update_mmu_tlb_range(vma, address, ptep, nr) \
 	update_mmu_cache_range(NULL, vma, address, ptep, nr)
 
-static inline void update_mmu_cache_pmd(struct vm_area_struct *vma,
+static inline void update_mmu_cache_pmd(struct mm_area *vma,
 	unsigned long address, pmd_t *pmdp)
 {
 	pte_t pte = *(pte_t *)pmdp;
@@ -610,7 +610,7 @@ static inline void update_mmu_cache_pmd(struct vm_area_struct *vma,
  */
 #ifdef CONFIG_MIPS_FIXUP_BIGPHYS_ADDR
 phys_addr_t fixup_bigphys_addr(phys_addr_t addr, phys_addr_t size);
-int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long vaddr,
+int io_remap_pfn_range(struct mm_area *vma, unsigned long vaddr,
 		unsigned long pfn, unsigned long size, pgprot_t prot);
 #define io_remap_pfn_range io_remap_pfn_range
 #else
diff --git a/arch/mips/include/asm/tlbflush.h b/arch/mips/include/asm/tlbflush.h
index 9789e7a32def..26d11d18b2b4 100644
--- a/arch/mips/include/asm/tlbflush.h
+++ b/arch/mips/include/asm/tlbflush.h
@@ -14,11 +14,11 @@
  *  - flush_tlb_kernel_range(start, end) flushes a range of kernel pages
  */
 extern void local_flush_tlb_all(void);
-extern void local_flush_tlb_range(struct vm_area_struct *vma,
+extern void local_flush_tlb_range(struct mm_area *vma,
 	unsigned long start, unsigned long end);
 extern void local_flush_tlb_kernel_range(unsigned long start,
 	unsigned long end);
-extern void local_flush_tlb_page(struct vm_area_struct *vma,
+extern void local_flush_tlb_page(struct mm_area *vma,
 	unsigned long page);
 extern void local_flush_tlb_one(unsigned long vaddr);
 
@@ -28,10 +28,10 @@ extern void local_flush_tlb_one(unsigned long vaddr);
 
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm(struct mm_struct *);
-extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long,
+extern void flush_tlb_range(struct mm_area *vma, unsigned long,
 	unsigned long);
 extern void flush_tlb_kernel_range(unsigned long, unsigned long);
-extern void flush_tlb_page(struct vm_area_struct *, unsigned long);
+extern void flush_tlb_page(struct mm_area *, unsigned long);
 extern void flush_tlb_one(unsigned long vaddr);
 
 #else /* CONFIG_SMP */
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index 39e193cad2b9..6f006e89d2f3 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -566,7 +566,7 @@ void flush_tlb_mm(struct mm_struct *mm)
 }
 
 struct flush_tlb_data {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr1;
 	unsigned long addr2;
 };
@@ -578,7 +578,7 @@ static void flush_tlb_range_ipi(void *info)
 	local_flush_tlb_range(fd->vma, fd->addr1, fd->addr2);
 }
 
-void flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+void flush_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	struct mm_struct *mm = vma->vm_mm;
 	unsigned long addr;
@@ -652,7 +652,7 @@ static void flush_tlb_page_ipi(void *info)
 	local_flush_tlb_page(fd->vma, fd->addr1);
 }
 
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+void flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	u32 old_mmid;
 
diff --git a/arch/mips/kernel/vdso.c b/arch/mips/kernel/vdso.c
index de096777172f..4ab46161d876 100644
--- a/arch/mips/kernel/vdso.c
+++ b/arch/mips/kernel/vdso.c
@@ -79,7 +79,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 	struct mips_vdso_image *image = current->thread.abi->vdso;
 	struct mm_struct *mm = current->mm;
 	unsigned long gic_size, size, base, data_addr, vdso_addr, gic_pfn, gic_base;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int ret;
 
 	if (mmap_write_lock_killable(mm))
diff --git a/arch/mips/mm/c-octeon.c b/arch/mips/mm/c-octeon.c
index b7393b61cfa7..ba064d76dd1b 100644
--- a/arch/mips/mm/c-octeon.c
+++ b/arch/mips/mm/c-octeon.c
@@ -60,7 +60,7 @@ static void local_octeon_flush_icache_range(unsigned long start,
  *
  * @vma:    VMA to flush or NULL to flush all icaches.
  */
-static void octeon_flush_icache_all_cores(struct vm_area_struct *vma)
+static void octeon_flush_icache_all_cores(struct mm_area *vma)
 {
 	extern void octeon_send_ipi_single(int cpu, unsigned int action);
 #ifdef CONFIG_SMP
@@ -136,7 +136,7 @@ static void octeon_flush_icache_range(unsigned long start, unsigned long end)
  * @start:  beginning address for flush
  * @end:    ending address for flush
  */
-static void octeon_flush_cache_range(struct vm_area_struct *vma,
+static void octeon_flush_cache_range(struct mm_area *vma,
 				     unsigned long start, unsigned long end)
 {
 	if (vma->vm_flags & VM_EXEC)
@@ -151,7 +151,7 @@ static void octeon_flush_cache_range(struct vm_area_struct *vma,
  * @page:   Page to flush
  * @pfn:    Page frame number
  */
-static void octeon_flush_cache_page(struct vm_area_struct *vma,
+static void octeon_flush_cache_page(struct mm_area *vma,
 				    unsigned long page, unsigned long pfn)
 {
 	if (vma->vm_flags & VM_EXEC)
diff --git a/arch/mips/mm/c-r3k.c b/arch/mips/mm/c-r3k.c
index 5869df848fab..c97e789bb9cb 100644
--- a/arch/mips/mm/c-r3k.c
+++ b/arch/mips/mm/c-r3k.c
@@ -228,12 +228,12 @@ static void r3k_flush_cache_mm(struct mm_struct *mm)
 {
 }
 
-static void r3k_flush_cache_range(struct vm_area_struct *vma,
+static void r3k_flush_cache_range(struct mm_area *vma,
 				  unsigned long start, unsigned long end)
 {
 }
 
-static void r3k_flush_cache_page(struct vm_area_struct *vma,
+static void r3k_flush_cache_page(struct mm_area *vma,
 				 unsigned long addr, unsigned long pfn)
 {
 	unsigned long kaddr = KSEG0ADDR(pfn << PAGE_SHIFT);
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c
index 10413b6f6662..d2e65e6548e4 100644
--- a/arch/mips/mm/c-r4k.c
+++ b/arch/mips/mm/c-r4k.c
@@ -469,7 +469,7 @@ static void r4k__flush_cache_vunmap(void)
  */
 static inline void local_r4k_flush_cache_range(void * args)
 {
-	struct vm_area_struct *vma = args;
+	struct mm_area *vma = args;
 	int exec = vma->vm_flags & VM_EXEC;
 
 	if (!has_valid_asid(vma->vm_mm, R4K_INDEX))
@@ -487,7 +487,7 @@ static inline void local_r4k_flush_cache_range(void * args)
 		r4k_blast_icache();
 }
 
-static void r4k_flush_cache_range(struct vm_area_struct *vma,
+static void r4k_flush_cache_range(struct mm_area *vma,
 	unsigned long start, unsigned long end)
 {
 	int exec = vma->vm_flags & VM_EXEC;
@@ -529,7 +529,7 @@ static void r4k_flush_cache_mm(struct mm_struct *mm)
 }
 
 struct flush_cache_page_args {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr;
 	unsigned long pfn;
 };
@@ -537,7 +537,7 @@ struct flush_cache_page_args {
 static inline void local_r4k_flush_cache_page(void *args)
 {
 	struct flush_cache_page_args *fcp_args = args;
-	struct vm_area_struct *vma = fcp_args->vma;
+	struct mm_area *vma = fcp_args->vma;
 	unsigned long addr = fcp_args->addr;
 	struct page *page = pfn_to_page(fcp_args->pfn);
 	int exec = vma->vm_flags & VM_EXEC;
@@ -605,7 +605,7 @@ static inline void local_r4k_flush_cache_page(void *args)
 	}
 }
 
-static void r4k_flush_cache_page(struct vm_area_struct *vma,
+static void r4k_flush_cache_page(struct mm_area *vma,
 	unsigned long addr, unsigned long pfn)
 {
 	struct flush_cache_page_args args;
diff --git a/arch/mips/mm/cache.c b/arch/mips/mm/cache.c
index bf9a37c60e9f..10eba2a62402 100644
--- a/arch/mips/mm/cache.c
+++ b/arch/mips/mm/cache.c
@@ -30,9 +30,9 @@ void (*flush_cache_all)(void);
 void (*__flush_cache_all)(void);
 EXPORT_SYMBOL_GPL(__flush_cache_all);
 void (*flush_cache_mm)(struct mm_struct *mm);
-void (*flush_cache_range)(struct vm_area_struct *vma, unsigned long start,
+void (*flush_cache_range)(struct mm_area *vma, unsigned long start,
 	unsigned long end);
-void (*flush_cache_page)(struct vm_area_struct *vma, unsigned long page,
+void (*flush_cache_page)(struct mm_area *vma, unsigned long page,
 	unsigned long pfn);
 void (*flush_icache_range)(unsigned long start, unsigned long end);
 EXPORT_SYMBOL_GPL(flush_icache_range);
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c
index 37fedeaca2e9..a18c0a590a1e 100644
--- a/arch/mips/mm/fault.c
+++ b/arch/mips/mm/fault.c
@@ -39,7 +39,7 @@ int show_unhandled_signals = 1;
 static void __do_page_fault(struct pt_regs *regs, unsigned long write,
 	unsigned long address)
 {
-	struct vm_area_struct * vma = NULL;
+	struct mm_area * vma = NULL;
 	struct task_struct *tsk = current;
 	struct mm_struct *mm = tsk->mm;
 	const int field = sizeof(unsigned long) * 2;
diff --git a/arch/mips/mm/hugetlbpage.c b/arch/mips/mm/hugetlbpage.c
index 0b9e15555b59..a1b62b2ce516 100644
--- a/arch/mips/mm/hugetlbpage.c
+++ b/arch/mips/mm/hugetlbpage.c
@@ -21,7 +21,7 @@
 #include <asm/tlb.h>
 #include <asm/tlbflush.h>
 
-pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pte_alloc(struct mm_struct *mm, struct mm_area *vma,
 		      unsigned long addr, unsigned long sz)
 {
 	pgd_t *pgd;
diff --git a/arch/mips/mm/init.c b/arch/mips/mm/init.c
index a673d3d68254..69ae87f80ad8 100644
--- a/arch/mips/mm/init.c
+++ b/arch/mips/mm/init.c
@@ -161,7 +161,7 @@ void kunmap_coherent(void)
 }
 
 void copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	struct folio *src = page_folio(from);
 	void *vfrom, *vto;
@@ -185,7 +185,7 @@ void copy_user_highpage(struct page *to, struct page *from,
 	smp_wmb();
 }
 
-void copy_to_user_page(struct vm_area_struct *vma,
+void copy_to_user_page(struct mm_area *vma,
 	struct page *page, unsigned long vaddr, void *dst, const void *src,
 	unsigned long len)
 {
@@ -205,7 +205,7 @@ void copy_to_user_page(struct vm_area_struct *vma,
 		flush_cache_page(vma, vaddr, page_to_pfn(page));
 }
 
-void copy_from_user_page(struct vm_area_struct *vma,
+void copy_from_user_page(struct mm_area *vma,
 	struct page *page, unsigned long vaddr, void *dst, const void *src,
 	unsigned long len)
 {
diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c
index 5d2a1225785b..5451673f26d2 100644
--- a/arch/mips/mm/mmap.c
+++ b/arch/mips/mm/mmap.c
@@ -31,7 +31,7 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp,
 	unsigned long flags, enum mmap_allocation_direction dir)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr = addr0;
 	int do_color_align;
 	struct vm_unmapped_area_info info = {};
diff --git a/arch/mips/mm/tlb-r3k.c b/arch/mips/mm/tlb-r3k.c
index 173f7b36033b..b43ba28e3a6a 100644
--- a/arch/mips/mm/tlb-r3k.c
+++ b/arch/mips/mm/tlb-r3k.c
@@ -64,7 +64,7 @@ void local_flush_tlb_all(void)
 	local_irq_restore(flags);
 }
 
-void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void local_flush_tlb_range(struct mm_area *vma, unsigned long start,
 			   unsigned long end)
 {
 	unsigned long asid_mask = cpu_asid_mask(&current_cpu_data);
@@ -144,7 +144,7 @@ void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
 	local_irq_restore(flags);
 }
 
-void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+void local_flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	unsigned long asid_mask = cpu_asid_mask(&current_cpu_data);
 	int cpu = smp_processor_id();
@@ -176,7 +176,7 @@ void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
 	}
 }
 
-void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t pte)
+void __update_tlb(struct mm_area *vma, unsigned long address, pte_t pte)
 {
 	unsigned long asid_mask = cpu_asid_mask(&current_cpu_data);
 	unsigned long flags;
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c
index 76f3b9c0a9f0..391bc8414146 100644
--- a/arch/mips/mm/tlb-r4k.c
+++ b/arch/mips/mm/tlb-r4k.c
@@ -45,7 +45,7 @@ static inline void flush_micro_tlb(void)
 	}
 }
 
-static inline void flush_micro_tlb_vm(struct vm_area_struct *vma)
+static inline void flush_micro_tlb_vm(struct mm_area *vma)
 {
 	if (vma->vm_flags & VM_EXEC)
 		flush_micro_tlb();
@@ -103,7 +103,7 @@ void local_flush_tlb_all(void)
 }
 EXPORT_SYMBOL(local_flush_tlb_all);
 
-void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void local_flush_tlb_range(struct mm_area *vma, unsigned long start,
 	unsigned long end)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -208,7 +208,7 @@ void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
 	local_irq_restore(flags);
 }
 
-void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+void local_flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	int cpu = smp_processor_id();
 
@@ -290,7 +290,7 @@ void local_flush_tlb_one(unsigned long page)
  * updates the TLB with the new pte(s), and another which also checks
  * for the R4k "end of page" hardware bug and does the needy.
  */
-void __update_tlb(struct vm_area_struct * vma, unsigned long address, pte_t pte)
+void __update_tlb(struct mm_area * vma, unsigned long address, pte_t pte)
 {
 	unsigned long flags;
 	pgd_t *pgdp;
diff --git a/arch/mips/vdso/genvdso.c b/arch/mips/vdso/genvdso.c
index d47412ea6e67..4fdccdfe055d 100644
--- a/arch/mips/vdso/genvdso.c
+++ b/arch/mips/vdso/genvdso.c
@@ -261,7 +261,7 @@ int main(int argc, char **argv)
 	fprintf(out_file, "#include <asm/vdso.h>\n");
 	fprintf(out_file, "static int vdso_mremap(\n");
 	fprintf(out_file, "	const struct vm_special_mapping *sm,\n");
-	fprintf(out_file, "	struct vm_area_struct *new_vma)\n");
+	fprintf(out_file, "	struct mm_area *new_vma)\n");
 	fprintf(out_file, "{\n");
 	fprintf(out_file, "	current->mm->context.vdso =\n");
 	fprintf(out_file, "	(void *)(new_vma->vm_start);\n");
diff --git a/arch/nios2/include/asm/cacheflush.h b/arch/nios2/include/asm/cacheflush.h
index 81484a776b33..c87da07c790b 100644
--- a/arch/nios2/include/asm/cacheflush.h
+++ b/arch/nios2/include/asm/cacheflush.h
@@ -23,9 +23,9 @@ struct mm_struct;
 extern void flush_cache_all(void);
 extern void flush_cache_mm(struct mm_struct *mm);
 extern void flush_cache_dup_mm(struct mm_struct *mm);
-extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start,
+extern void flush_cache_range(struct mm_area *vma, unsigned long start,
 	unsigned long end);
-extern void flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr,
+extern void flush_cache_page(struct mm_area *vma, unsigned long vmaddr,
 	unsigned long pfn);
 #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 1
 void flush_dcache_page(struct page *page);
@@ -33,7 +33,7 @@ void flush_dcache_folio(struct folio *folio);
 #define flush_dcache_folio flush_dcache_folio
 
 extern void flush_icache_range(unsigned long start, unsigned long end);
-void flush_icache_pages(struct vm_area_struct *vma, struct page *page,
+void flush_icache_pages(struct mm_area *vma, struct page *page,
 		unsigned int nr);
 #define flush_icache_pages flush_icache_pages
 
@@ -41,10 +41,10 @@ void flush_icache_pages(struct vm_area_struct *vma, struct page *page,
 #define flush_cache_vmap_early(start, end)	do { } while (0)
 #define flush_cache_vunmap(start, end)		flush_dcache_range(start, end)
 
-extern void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+extern void copy_to_user_page(struct mm_area *vma, struct page *page,
 				unsigned long user_vaddr,
 				void *dst, void *src, int len);
-extern void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
+extern void copy_from_user_page(struct mm_area *vma, struct page *page,
 				unsigned long user_vaddr,
 				void *dst, void *src, int len);
 
diff --git a/arch/nios2/include/asm/pgtable.h b/arch/nios2/include/asm/pgtable.h
index eab87c6beacb..558eda85615e 100644
--- a/arch/nios2/include/asm/pgtable.h
+++ b/arch/nios2/include/asm/pgtable.h
@@ -285,7 +285,7 @@ static inline pte_t pte_swp_clear_exclusive(pte_t pte)
 extern void __init paging_init(void);
 extern void __init mmu_init(void);
 
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long address, pte_t *ptep, unsigned int nr);
 
 #define update_mmu_cache(vma, addr, ptep) \
diff --git a/arch/nios2/include/asm/tlbflush.h b/arch/nios2/include/asm/tlbflush.h
index 362d6da09d02..913f409d9777 100644
--- a/arch/nios2/include/asm/tlbflush.h
+++ b/arch/nios2/include/asm/tlbflush.h
@@ -23,11 +23,11 @@ struct mm_struct;
  */
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm(struct mm_struct *mm);
-extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+extern void flush_tlb_range(struct mm_area *vma, unsigned long start,
 			    unsigned long end);
 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
 
-static inline void flush_tlb_page(struct vm_area_struct *vma,
+static inline void flush_tlb_page(struct mm_area *vma,
 				  unsigned long address)
 {
 	flush_tlb_range(vma, address, address + PAGE_SIZE);
@@ -38,7 +38,7 @@ static inline void flush_tlb_kernel_page(unsigned long address)
 	flush_tlb_kernel_range(address, address + PAGE_SIZE);
 }
 
-extern void reload_tlb_page(struct vm_area_struct *vma, unsigned long addr,
+extern void reload_tlb_page(struct mm_area *vma, unsigned long addr,
 			    pte_t pte);
 
 #endif /* _ASM_NIOS2_TLBFLUSH_H */
diff --git a/arch/nios2/kernel/sys_nios2.c b/arch/nios2/kernel/sys_nios2.c
index b1ca85699952..7c275dff5822 100644
--- a/arch/nios2/kernel/sys_nios2.c
+++ b/arch/nios2/kernel/sys_nios2.c
@@ -21,7 +21,7 @@
 asmlinkage int sys_cacheflush(unsigned long addr, unsigned long len,
 				unsigned int op)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm = current->mm;
 
 	if (len == 0)
diff --git a/arch/nios2/mm/cacheflush.c b/arch/nios2/mm/cacheflush.c
index 0ee9c5f02e08..357ea747ea3d 100644
--- a/arch/nios2/mm/cacheflush.c
+++ b/arch/nios2/mm/cacheflush.c
@@ -74,7 +74,7 @@ static void __flush_icache(unsigned long start, unsigned long end)
 static void flush_aliases(struct address_space *mapping, struct folio *folio)
 {
 	struct mm_struct *mm = current->active_mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long flags;
 	pgoff_t pgoff;
 	unsigned long nr = folio_nr_pages(folio);
@@ -131,7 +131,7 @@ void invalidate_dcache_range(unsigned long start, unsigned long end)
 }
 EXPORT_SYMBOL(invalidate_dcache_range);
 
-void flush_cache_range(struct vm_area_struct *vma, unsigned long start,
+void flush_cache_range(struct mm_area *vma, unsigned long start,
 			unsigned long end)
 {
 	__flush_dcache(start, end);
@@ -139,7 +139,7 @@ void flush_cache_range(struct vm_area_struct *vma, unsigned long start,
 		__flush_icache(start, end);
 }
 
-void flush_icache_pages(struct vm_area_struct *vma, struct page *page,
+void flush_icache_pages(struct mm_area *vma, struct page *page,
 		unsigned int nr)
 {
 	unsigned long start = (unsigned long) page_address(page);
@@ -149,7 +149,7 @@ void flush_icache_pages(struct vm_area_struct *vma, struct page *page,
 	__flush_icache(start, end);
 }
 
-void flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr,
+void flush_cache_page(struct mm_area *vma, unsigned long vmaddr,
 			unsigned long pfn)
 {
 	unsigned long start = vmaddr;
@@ -206,7 +206,7 @@ void flush_dcache_page(struct page *page)
 }
 EXPORT_SYMBOL(flush_dcache_page);
 
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long address, pte_t *ptep, unsigned int nr)
 {
 	pte_t pte = *ptep;
@@ -258,7 +258,7 @@ void clear_user_page(void *addr, unsigned long vaddr, struct page *page)
 	__flush_icache((unsigned long)addr, (unsigned long)addr + PAGE_SIZE);
 }
 
-void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_from_user_page(struct mm_area *vma, struct page *page,
 			unsigned long user_vaddr,
 			void *dst, void *src, int len)
 {
@@ -269,7 +269,7 @@ void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
 		__flush_icache((unsigned long)src, (unsigned long)src + len);
 }
 
-void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_to_user_page(struct mm_area *vma, struct page *page,
 			unsigned long user_vaddr,
 			void *dst, void *src, int len)
 {
diff --git a/arch/nios2/mm/fault.c b/arch/nios2/mm/fault.c
index e3fa9c15181d..7901f945202e 100644
--- a/arch/nios2/mm/fault.c
+++ b/arch/nios2/mm/fault.c
@@ -43,7 +43,7 @@
 asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long cause,
 				unsigned long address)
 {
-	struct vm_area_struct *vma = NULL;
+	struct mm_area *vma = NULL;
 	struct task_struct *tsk = current;
 	struct mm_struct *mm = tsk->mm;
 	int code = SEGV_MAPERR;
diff --git a/arch/nios2/mm/init.c b/arch/nios2/mm/init.c
index 94efa3de3933..8f5a08ff465d 100644
--- a/arch/nios2/mm/init.c
+++ b/arch/nios2/mm/init.c
@@ -96,7 +96,7 @@ arch_initcall(alloc_kuser_page);
 int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	mmap_write_lock(mm);
 
@@ -110,7 +110,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 	return IS_ERR(vma) ? PTR_ERR(vma) : 0;
 }
 
-const char *arch_vma_name(struct vm_area_struct *vma)
+const char *arch_vma_name(struct mm_area *vma)
 {
 	return (vma->vm_start == KUSER_BASE) ? "[kuser]" : NULL;
 }
diff --git a/arch/nios2/mm/tlb.c b/arch/nios2/mm/tlb.c
index f90ac35f05f3..749b4fd052cf 100644
--- a/arch/nios2/mm/tlb.c
+++ b/arch/nios2/mm/tlb.c
@@ -99,7 +99,7 @@ static void reload_tlb_one_pid(unsigned long addr, unsigned long mmu_pid, pte_t
 	replace_tlb_one_pid(addr, mmu_pid, pte_val(pte));
 }
 
-void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void flush_tlb_range(struct mm_area *vma, unsigned long start,
 			unsigned long end)
 {
 	unsigned long mmu_pid = get_pid_from_context(&vma->vm_mm->context);
@@ -110,7 +110,7 @@ void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
 	}
 }
 
-void reload_tlb_page(struct vm_area_struct *vma, unsigned long addr, pte_t pte)
+void reload_tlb_page(struct mm_area *vma, unsigned long addr, pte_t pte)
 {
 	unsigned long mmu_pid = get_pid_from_context(&vma->vm_mm->context);
 
diff --git a/arch/openrisc/include/asm/pgtable.h b/arch/openrisc/include/asm/pgtable.h
index 60c6ce7ff2dc..0acc625d0607 100644
--- a/arch/openrisc/include/asm/pgtable.h
+++ b/arch/openrisc/include/asm/pgtable.h
@@ -370,18 +370,18 @@ static inline unsigned long pmd_page_vaddr(pmd_t pmd)
 
 extern pgd_t swapper_pg_dir[PTRS_PER_PGD]; /* defined in head.S */
 
-struct vm_area_struct;
+struct mm_area;
 
-static inline void update_tlb(struct vm_area_struct *vma,
+static inline void update_tlb(struct mm_area *vma,
 	unsigned long address, pte_t *pte)
 {
 }
 
-extern void update_cache(struct vm_area_struct *vma,
+extern void update_cache(struct mm_area *vma,
 	unsigned long address, pte_t *pte);
 
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long address,
+		struct mm_area *vma, unsigned long address,
 		pte_t *ptep, unsigned int nr)
 {
 	update_tlb(vma, address, ptep);
diff --git a/arch/openrisc/include/asm/tlbflush.h b/arch/openrisc/include/asm/tlbflush.h
index dbf030365ab4..4773da3c2d29 100644
--- a/arch/openrisc/include/asm/tlbflush.h
+++ b/arch/openrisc/include/asm/tlbflush.h
@@ -29,9 +29,9 @@
  */
 extern void local_flush_tlb_all(void);
 extern void local_flush_tlb_mm(struct mm_struct *mm);
-extern void local_flush_tlb_page(struct vm_area_struct *vma,
+extern void local_flush_tlb_page(struct mm_area *vma,
 				 unsigned long addr);
-extern void local_flush_tlb_range(struct vm_area_struct *vma,
+extern void local_flush_tlb_range(struct mm_area *vma,
 				  unsigned long start,
 				  unsigned long end);
 
@@ -43,8 +43,8 @@ extern void local_flush_tlb_range(struct vm_area_struct *vma,
 #else
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm(struct mm_struct *mm);
-extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr);
-extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+extern void flush_tlb_page(struct mm_area *vma, unsigned long addr);
+extern void flush_tlb_range(struct mm_area *vma, unsigned long start,
 			    unsigned long end);
 #endif
 
diff --git a/arch/openrisc/kernel/smp.c b/arch/openrisc/kernel/smp.c
index 86da4bc5ee0b..1eb34b914609 100644
--- a/arch/openrisc/kernel/smp.c
+++ b/arch/openrisc/kernel/smp.c
@@ -300,12 +300,12 @@ void flush_tlb_mm(struct mm_struct *mm)
 	smp_flush_tlb_mm(mm_cpumask(mm), mm);
 }
 
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long uaddr)
+void flush_tlb_page(struct mm_area *vma, unsigned long uaddr)
 {
 	smp_flush_tlb_range(mm_cpumask(vma->vm_mm), uaddr, uaddr + PAGE_SIZE);
 }
 
-void flush_tlb_range(struct vm_area_struct *vma,
+void flush_tlb_range(struct mm_area *vma,
 		     unsigned long start, unsigned long end)
 {
 	const struct cpumask *cmask = vma ? mm_cpumask(vma->vm_mm)
diff --git a/arch/openrisc/mm/cache.c b/arch/openrisc/mm/cache.c
index 7bdd07cfca60..64649f65f943 100644
--- a/arch/openrisc/mm/cache.c
+++ b/arch/openrisc/mm/cache.c
@@ -78,7 +78,7 @@ void local_icache_range_inv(unsigned long start, unsigned long end)
 	cache_loop(start, end, SPR_ICBIR, SPR_UPR_ICP);
 }
 
-void update_cache(struct vm_area_struct *vma, unsigned long address,
+void update_cache(struct mm_area *vma, unsigned long address,
 	pte_t *pte)
 {
 	unsigned long pfn = pte_val(*pte) >> PAGE_SHIFT;
diff --git a/arch/openrisc/mm/fault.c b/arch/openrisc/mm/fault.c
index 29e232d78d82..800bceca3bcd 100644
--- a/arch/openrisc/mm/fault.c
+++ b/arch/openrisc/mm/fault.c
@@ -48,7 +48,7 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long address,
 {
 	struct task_struct *tsk;
 	struct mm_struct *mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int si_code;
 	vm_fault_t fault;
 	unsigned int flags = FAULT_FLAG_DEFAULT;
diff --git a/arch/openrisc/mm/tlb.c b/arch/openrisc/mm/tlb.c
index 3115f2e4f864..594a5adb8646 100644
--- a/arch/openrisc/mm/tlb.c
+++ b/arch/openrisc/mm/tlb.c
@@ -80,7 +80,7 @@ void local_flush_tlb_all(void)
 #define flush_itlb_page_no_eir(addr) \
 	mtspr_off(SPR_ITLBMR_BASE(0), ITLB_OFFSET(addr), 0);
 
-void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
+void local_flush_tlb_page(struct mm_area *vma, unsigned long addr)
 {
 	if (have_dtlbeir)
 		flush_dtlb_page_eir(addr);
@@ -93,7 +93,7 @@ void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
 		flush_itlb_page_no_eir(addr);
 }
 
-void local_flush_tlb_range(struct vm_area_struct *vma,
+void local_flush_tlb_range(struct mm_area *vma,
 			   unsigned long start, unsigned long end)
 {
 	int addr;
diff --git a/arch/parisc/include/asm/cacheflush.h b/arch/parisc/include/asm/cacheflush.h
index 8394718870e1..fe13de0d9a12 100644
--- a/arch/parisc/include/asm/cacheflush.h
+++ b/arch/parisc/include/asm/cacheflush.h
@@ -58,7 +58,7 @@ static inline void flush_dcache_page(struct page *page)
 #define flush_dcache_mmap_unlock_irqrestore(mapping, flags)	\
 		xa_unlock_irqrestore(&mapping->i_pages, flags)
 
-void flush_icache_pages(struct vm_area_struct *vma, struct page *page,
+void flush_icache_pages(struct mm_area *vma, struct page *page,
 		unsigned int nr);
 #define flush_icache_pages flush_icache_pages
 
@@ -67,17 +67,17 @@ void flush_icache_pages(struct vm_area_struct *vma, struct page *page,
 	flush_kernel_icache_range_asm(s,e); 		\
 } while (0)
 
-void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_to_user_page(struct mm_area *vma, struct page *page,
 		unsigned long user_vaddr, void *dst, void *src, int len);
-void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_from_user_page(struct mm_area *vma, struct page *page,
 		unsigned long user_vaddr, void *dst, void *src, int len);
-void flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr,
+void flush_cache_page(struct mm_area *vma, unsigned long vmaddr,
 		unsigned long pfn);
-void flush_cache_range(struct vm_area_struct *vma,
+void flush_cache_range(struct mm_area *vma,
 		unsigned long start, unsigned long end);
 
 #define ARCH_HAS_FLUSH_ANON_PAGE
-void flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr);
+void flush_anon_page(struct mm_area *vma, struct page *page, unsigned long vmaddr);
 
 #define ARCH_HAS_FLUSH_ON_KUNMAP
 void kunmap_flush_on_unmap(const void *addr);
diff --git a/arch/parisc/include/asm/hugetlb.h b/arch/parisc/include/asm/hugetlb.h
index 21e9ace17739..f19c029f612b 100644
--- a/arch/parisc/include/asm/hugetlb.h
+++ b/arch/parisc/include/asm/hugetlb.h
@@ -13,7 +13,7 @@ pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
 			      pte_t *ptep, unsigned long sz);
 
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
-static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+static inline pte_t huge_ptep_clear_flush(struct mm_area *vma,
 					  unsigned long addr, pte_t *ptep)
 {
 	return *ptep;
@@ -24,7 +24,7 @@ void huge_ptep_set_wrprotect(struct mm_struct *mm,
 					   unsigned long addr, pte_t *ptep);
 
 #define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
-int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+int huge_ptep_set_access_flags(struct mm_area *vma,
 					     unsigned long addr, pte_t *ptep,
 					     pte_t pte, int dirty);
 
diff --git a/arch/parisc/include/asm/page.h b/arch/parisc/include/asm/page.h
index 7fd447092630..427bf90b3f98 100644
--- a/arch/parisc/include/asm/page.h
+++ b/arch/parisc/include/asm/page.h
@@ -17,13 +17,13 @@
 #define copy_page(to, from)	copy_page_asm((void *)(to), (void *)(from))
 
 struct page;
-struct vm_area_struct;
+struct mm_area;
 
 void clear_page_asm(void *page);
 void copy_page_asm(void *to, void *from);
 #define clear_user_page(vto, vaddr, page) clear_page_asm(vto)
 void copy_user_highpage(struct page *to, struct page *from, unsigned long vaddr,
-		struct vm_area_struct *vma);
+		struct mm_area *vma);
 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
 
 /*
diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h
index babf65751e81..4b59b5fbd85c 100644
--- a/arch/parisc/include/asm/pgtable.h
+++ b/arch/parisc/include/asm/pgtable.h
@@ -454,7 +454,7 @@ static inline pte_t ptep_get(pte_t *ptep)
 }
 #define ptep_get ptep_get
 
-static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)
+static inline int ptep_test_and_clear_young(struct mm_area *vma, unsigned long addr, pte_t *ptep)
 {
 	pte_t pte;
 
@@ -466,8 +466,8 @@ static inline int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned
 	return 1;
 }
 
-int ptep_clear_flush_young(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep);
-pte_t ptep_clear_flush(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep);
+int ptep_clear_flush_young(struct mm_area *vma, unsigned long addr, pte_t *ptep);
+pte_t ptep_clear_flush(struct mm_area *vma, unsigned long addr, pte_t *ptep);
 
 struct mm_struct;
 static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
diff --git a/arch/parisc/include/asm/tlbflush.h b/arch/parisc/include/asm/tlbflush.h
index 5ffd7c17f593..3683645fd41d 100644
--- a/arch/parisc/include/asm/tlbflush.h
+++ b/arch/parisc/include/asm/tlbflush.h
@@ -61,7 +61,7 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
 #endif
 }
 
-static inline void flush_tlb_page(struct vm_area_struct *vma,
+static inline void flush_tlb_page(struct mm_area *vma,
 	unsigned long addr)
 {
 	purge_tlb_entries(vma->vm_mm, addr);
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
index db531e58d70e..752562b78d90 100644
--- a/arch/parisc/kernel/cache.c
+++ b/arch/parisc/kernel/cache.c
@@ -328,7 +328,7 @@ void disable_sr_hashing(void)
 }
 
 static inline void
-__flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr,
+__flush_cache_page(struct mm_area *vma, unsigned long vmaddr,
 		   unsigned long physaddr)
 {
 	if (!static_branch_likely(&parisc_has_cache))
@@ -390,7 +390,7 @@ void kunmap_flush_on_unmap(const void *addr)
 }
 EXPORT_SYMBOL(kunmap_flush_on_unmap);
 
-void flush_icache_pages(struct vm_area_struct *vma, struct page *page,
+void flush_icache_pages(struct mm_area *vma, struct page *page,
 		unsigned int nr)
 {
 	void *kaddr = page_address(page);
@@ -473,7 +473,7 @@ static inline unsigned long get_upa(struct mm_struct *mm, unsigned long addr)
 void flush_dcache_folio(struct folio *folio)
 {
 	struct address_space *mapping = folio_flush_mapping(folio);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr, old_addr = 0;
 	void *kaddr;
 	unsigned long count = 0;
@@ -620,7 +620,7 @@ extern void purge_kernel_dcache_page_asm(unsigned long);
 extern void clear_user_page_asm(void *, unsigned long);
 extern void copy_user_page_asm(void *, void *, unsigned long);
 
-static void flush_cache_page_if_present(struct vm_area_struct *vma,
+static void flush_cache_page_if_present(struct mm_area *vma,
 	unsigned long vmaddr)
 {
 #if CONFIG_FLUSH_PAGE_ACCESSED
@@ -645,7 +645,7 @@ static void flush_cache_page_if_present(struct vm_area_struct *vma,
 }
 
 void copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	void *kto, *kfrom;
 
@@ -657,7 +657,7 @@ void copy_user_highpage(struct page *to, struct page *from,
 	kunmap_local(kfrom);
 }
 
-void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_to_user_page(struct mm_area *vma, struct page *page,
 		unsigned long user_vaddr, void *dst, void *src, int len)
 {
 	__flush_cache_page(vma, user_vaddr, PFN_PHYS(page_to_pfn(page)));
@@ -665,7 +665,7 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
 	flush_kernel_dcache_page_addr(PTR_PAGE_ALIGN_DOWN(dst));
 }
 
-void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_from_user_page(struct mm_area *vma, struct page *page,
 		unsigned long user_vaddr, void *dst, void *src, int len)
 {
 	__flush_cache_page(vma, user_vaddr, PFN_PHYS(page_to_pfn(page)));
@@ -702,7 +702,7 @@ int __flush_tlb_range(unsigned long sid, unsigned long start,
 	return 0;
 }
 
-static void flush_cache_pages(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+static void flush_cache_pages(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	unsigned long addr;
 
@@ -712,7 +712,7 @@ static void flush_cache_pages(struct vm_area_struct *vma, unsigned long start, u
 
 static inline unsigned long mm_total_size(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long usize = 0;
 	VMA_ITERATOR(vmi, mm, 0);
 
@@ -726,7 +726,7 @@ static inline unsigned long mm_total_size(struct mm_struct *mm)
 
 void flush_cache_mm(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	/*
@@ -751,7 +751,7 @@ void flush_cache_mm(struct mm_struct *mm)
 		flush_cache_pages(vma, vma->vm_start, vma->vm_end);
 }
 
-void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+void flush_cache_range(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	if (!parisc_requires_coherency()
 	    || end - start >= parisc_cache_flush_threshold) {
@@ -768,12 +768,12 @@ void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned
 	flush_cache_pages(vma, start & PAGE_MASK, end);
 }
 
-void flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long pfn)
+void flush_cache_page(struct mm_area *vma, unsigned long vmaddr, unsigned long pfn)
 {
 	__flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
 }
 
-void flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr)
+void flush_anon_page(struct mm_area *vma, struct page *page, unsigned long vmaddr)
 {
 	if (!PageAnon(page))
 		return;
@@ -781,7 +781,7 @@ void flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned lon
 	__flush_cache_page(vma, vmaddr, PFN_PHYS(page_to_pfn(page)));
 }
 
-int ptep_clear_flush_young(struct vm_area_struct *vma, unsigned long addr,
+int ptep_clear_flush_young(struct mm_area *vma, unsigned long addr,
 			   pte_t *ptep)
 {
 	pte_t pte = ptep_get(ptep);
@@ -801,7 +801,7 @@ int ptep_clear_flush_young(struct vm_area_struct *vma, unsigned long addr,
  * can cause random cache corruption. Thus, we must flush the cache
  * as well as the TLB when clearing a PTE that's valid.
  */
-pte_t ptep_clear_flush(struct vm_area_struct *vma, unsigned long addr,
+pte_t ptep_clear_flush(struct mm_area *vma, unsigned long addr,
 		       pte_t *ptep)
 {
 	struct mm_struct *mm = (vma)->vm_mm;
diff --git a/arch/parisc/kernel/sys_parisc.c b/arch/parisc/kernel/sys_parisc.c
index f852fe274abe..15fd6e8979d7 100644
--- a/arch/parisc/kernel/sys_parisc.c
+++ b/arch/parisc/kernel/sys_parisc.c
@@ -101,7 +101,7 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp,
 	unsigned long flags, enum mmap_allocation_direction dir)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma, *prev;
+	struct mm_area *vma, *prev;
 	unsigned long filp_pgoff;
 	int do_color_align;
 	struct vm_unmapped_area_info info = {
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
index b9b3d527bc90..6c26d9c5d7f9 100644
--- a/arch/parisc/kernel/traps.c
+++ b/arch/parisc/kernel/traps.c
@@ -711,7 +711,7 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
 		 */
 
 		if (user_mode(regs)) {
-			struct vm_area_struct *vma;
+			struct mm_area *vma;
 
 			mmap_read_lock(current->mm);
 			vma = find_vma(current->mm,regs->iaoq[0]);
diff --git a/arch/parisc/kernel/vdso.c b/arch/parisc/kernel/vdso.c
index c5cbfce7a84c..f7075a8b3bd1 100644
--- a/arch/parisc/kernel/vdso.c
+++ b/arch/parisc/kernel/vdso.c
@@ -27,7 +27,7 @@ extern char vdso32_start, vdso32_end;
 extern char vdso64_start, vdso64_end;
 
 static int vdso_mremap(const struct vm_special_mapping *sm,
-		       struct vm_area_struct *vma)
+		       struct mm_area *vma)
 {
 	current->mm->context.vdso_base = vma->vm_start;
 	return 0;
@@ -56,7 +56,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm,
 	unsigned long vdso_text_start, vdso_text_len, map_base;
 	struct vm_special_mapping *vdso_mapping;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int rc;
 
 	if (mmap_write_lock_killable(mm))
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c
index c39de84e98b0..c1fbc50fc840 100644
--- a/arch/parisc/mm/fault.c
+++ b/arch/parisc/mm/fault.c
@@ -241,7 +241,7 @@ const char *trap_name(unsigned long code)
 static inline void
 show_signal_msg(struct pt_regs *regs, unsigned long code,
 		unsigned long address, struct task_struct *tsk,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	if (!unhandled_signal(tsk, SIGSEGV))
 		return;
@@ -267,7 +267,7 @@ show_signal_msg(struct pt_regs *regs, unsigned long code,
 void do_page_fault(struct pt_regs *regs, unsigned long code,
 			      unsigned long address)
 {
-	struct vm_area_struct *vma, *prev_vma;
+	struct mm_area *vma, *prev_vma;
 	struct task_struct *tsk;
 	struct mm_struct *mm;
 	unsigned long acc_type;
@@ -454,7 +454,7 @@ handle_nadtlb_fault(struct pt_regs *regs)
 {
 	unsigned long insn = regs->iir;
 	int breg, treg, xreg, val = 0;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct task_struct *tsk;
 	struct mm_struct *mm;
 	unsigned long address;
diff --git a/arch/parisc/mm/hugetlbpage.c b/arch/parisc/mm/hugetlbpage.c
index a94fe546d434..31fa175e4b67 100644
--- a/arch/parisc/mm/hugetlbpage.c
+++ b/arch/parisc/mm/hugetlbpage.c
@@ -23,7 +23,7 @@
 
 
 
-pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pte_alloc(struct mm_struct *mm, struct mm_area *vma,
 			unsigned long addr, unsigned long sz)
 {
 	pgd_t *pgd;
@@ -146,7 +146,7 @@ void huge_ptep_set_wrprotect(struct mm_struct *mm,
 	__set_huge_pte_at(mm, addr, ptep, pte_wrprotect(old_pte));
 }
 
-int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+int huge_ptep_set_access_flags(struct mm_area *vma,
 				unsigned long addr, pte_t *ptep,
 				pte_t pte, int dirty)
 {
diff --git a/arch/powerpc/include/asm/book3s/32/pgtable.h b/arch/powerpc/include/asm/book3s/32/pgtable.h
index 42c3af90d1f0..87c6abe37935 100644
--- a/arch/powerpc/include/asm/book3s/32/pgtable.h
+++ b/arch/powerpc/include/asm/book3s/32/pgtable.h
@@ -325,7 +325,7 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr,
 	pte_update(mm, addr, ptep, _PAGE_WRITE, 0, 0);
 }
 
-static inline void __ptep_set_access_flags(struct vm_area_struct *vma,
+static inline void __ptep_set_access_flags(struct mm_area *vma,
 					   pte_t *ptep, pte_t entry,
 					   unsigned long address,
 					   int psize)
diff --git a/arch/powerpc/include/asm/book3s/32/tlbflush.h b/arch/powerpc/include/asm/book3s/32/tlbflush.h
index e43534da5207..dd7630bfcab8 100644
--- a/arch/powerpc/include/asm/book3s/32/tlbflush.h
+++ b/arch/powerpc/include/asm/book3s/32/tlbflush.h
@@ -9,7 +9,7 @@
  * TLB flushing for "classic" hash-MMU 32-bit CPUs, 6xx, 7xx, 7xxx
  */
 void hash__flush_tlb_mm(struct mm_struct *mm);
-void hash__flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
+void hash__flush_tlb_page(struct mm_area *vma, unsigned long vmaddr);
 void hash__flush_range(struct mm_struct *mm, unsigned long start, unsigned long end);
 
 #ifdef CONFIG_SMP
@@ -52,7 +52,7 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
 		_tlbia();
 }
 
-static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
+static inline void flush_tlb_page(struct mm_area *vma, unsigned long vmaddr)
 {
 	if (mmu_has_feature(MMU_FTR_HPTE_TABLE))
 		hash__flush_tlb_page(vma, vmaddr);
@@ -61,7 +61,7 @@ static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmad
 }
 
 static inline void
-flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+flush_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	flush_range(vma->vm_mm, start, end);
 }
@@ -71,7 +71,7 @@ static inline void flush_tlb_kernel_range(unsigned long start, unsigned long end
 	flush_range(&init_mm, start, end);
 }
 
-static inline void local_flush_tlb_page(struct vm_area_struct *vma,
+static inline void local_flush_tlb_page(struct mm_area *vma,
 					unsigned long vmaddr)
 {
 	flush_tlb_page(vma, vmaddr);
diff --git a/arch/powerpc/include/asm/book3s/64/hash-4k.h b/arch/powerpc/include/asm/book3s/64/hash-4k.h
index aa90a048f319..47b4b0ee9aff 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-4k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-4k.h
@@ -158,7 +158,7 @@ static inline pmd_t hash__pmd_mkhuge(pmd_t pmd)
 extern unsigned long hash__pmd_hugepage_update(struct mm_struct *mm,
 					   unsigned long addr, pmd_t *pmdp,
 					   unsigned long clr, unsigned long set);
-extern pmd_t hash__pmdp_collapse_flush(struct vm_area_struct *vma,
+extern pmd_t hash__pmdp_collapse_flush(struct mm_area *vma,
 				   unsigned long address, pmd_t *pmdp);
 extern void hash__pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
 					 pgtable_t pgtable);
diff --git a/arch/powerpc/include/asm/book3s/64/hash-64k.h b/arch/powerpc/include/asm/book3s/64/hash-64k.h
index 0bf6fd0bf42a..5d42aee48d90 100644
--- a/arch/powerpc/include/asm/book3s/64/hash-64k.h
+++ b/arch/powerpc/include/asm/book3s/64/hash-64k.h
@@ -170,9 +170,9 @@ extern bool __rpte_sub_valid(real_pte_t rpte, unsigned long index);
 #define pte_pagesize_index(mm, addr, pte)	\
 	(((pte) & H_PAGE_COMBO)? MMU_PAGE_4K: MMU_PAGE_64K)
 
-extern int remap_pfn_range(struct vm_area_struct *, unsigned long addr,
+extern int remap_pfn_range(struct mm_area *, unsigned long addr,
 			   unsigned long pfn, unsigned long size, pgprot_t);
-static inline int hash__remap_4k_pfn(struct vm_area_struct *vma, unsigned long addr,
+static inline int hash__remap_4k_pfn(struct mm_area *vma, unsigned long addr,
 				 unsigned long pfn, pgprot_t prot)
 {
 	if (pfn > (PTE_RPN_MASK >> PAGE_SHIFT)) {
@@ -271,7 +271,7 @@ static inline pmd_t hash__pmd_mkhuge(pmd_t pmd)
 extern unsigned long hash__pmd_hugepage_update(struct mm_struct *mm,
 					   unsigned long addr, pmd_t *pmdp,
 					   unsigned long clr, unsigned long set);
-extern pmd_t hash__pmdp_collapse_flush(struct vm_area_struct *vma,
+extern pmd_t hash__pmdp_collapse_flush(struct mm_area *vma,
 				   unsigned long address, pmd_t *pmdp);
 extern void hash__pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
 					 pgtable_t pgtable);
diff --git a/arch/powerpc/include/asm/book3s/64/hugetlb.h b/arch/powerpc/include/asm/book3s/64/hugetlb.h
index bb786694dd26..212cdb6c7e1f 100644
--- a/arch/powerpc/include/asm/book3s/64/hugetlb.h
+++ b/arch/powerpc/include/asm/book3s/64/hugetlb.h
@@ -9,10 +9,10 @@
  * both hash and radix to be enabled together we need to workaround the
  * limitations.
  */
-void radix__flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
-void radix__local_flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
+void radix__flush_hugetlb_page(struct mm_area *vma, unsigned long vmaddr);
+void radix__local_flush_hugetlb_page(struct mm_area *vma, unsigned long vmaddr);
 
-extern void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
+extern void radix__huge_ptep_modify_prot_commit(struct mm_area *vma,
 						unsigned long addr, pte_t *ptep,
 						pte_t old_pte, pte_t pte);
 
@@ -50,22 +50,22 @@ static inline bool gigantic_page_runtime_supported(void)
 }
 
 #define huge_ptep_modify_prot_start huge_ptep_modify_prot_start
-extern pte_t huge_ptep_modify_prot_start(struct vm_area_struct *vma,
+extern pte_t huge_ptep_modify_prot_start(struct mm_area *vma,
 					 unsigned long addr, pte_t *ptep);
 
 #define huge_ptep_modify_prot_commit huge_ptep_modify_prot_commit
-extern void huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
+extern void huge_ptep_modify_prot_commit(struct mm_area *vma,
 					 unsigned long addr, pte_t *ptep,
 					 pte_t old_pte, pte_t new_pte);
 
-static inline void flush_hugetlb_page(struct vm_area_struct *vma,
+static inline void flush_hugetlb_page(struct mm_area *vma,
 				      unsigned long vmaddr)
 {
 	if (radix_enabled())
 		return radix__flush_hugetlb_page(vma, vmaddr);
 }
 
-void flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
+void flush_hugetlb_page(struct mm_area *vma, unsigned long vmaddr);
 
 static inline int check_and_get_huge_psize(int shift)
 {
diff --git a/arch/powerpc/include/asm/book3s/64/pgtable-64k.h b/arch/powerpc/include/asm/book3s/64/pgtable-64k.h
index 4d8d7b4ea16b..430ded76ad49 100644
--- a/arch/powerpc/include/asm/book3s/64/pgtable-64k.h
+++ b/arch/powerpc/include/asm/book3s/64/pgtable-64k.h
@@ -7,7 +7,7 @@
 
 #endif /* CONFIG_HUGETLB_PAGE */
 
-static inline int remap_4k_pfn(struct vm_area_struct *vma, unsigned long addr,
+static inline int remap_4k_pfn(struct mm_area *vma, unsigned long addr,
 			       unsigned long pfn, pgprot_t prot)
 {
 	if (radix_enabled())
diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h
index 6d98e6f08d4d..18222f1eab2e 100644
--- a/arch/powerpc/include/asm/book3s/64/pgtable.h
+++ b/arch/powerpc/include/asm/book3s/64/pgtable.h
@@ -722,7 +722,7 @@ static inline bool check_pte_access(unsigned long access, unsigned long ptev)
  * Generic functions with hash/radix callbacks
  */
 
-static inline void __ptep_set_access_flags(struct vm_area_struct *vma,
+static inline void __ptep_set_access_flags(struct mm_area *vma,
 					   pte_t *ptep, pte_t entry,
 					   unsigned long address,
 					   int psize)
@@ -1104,12 +1104,12 @@ extern void set_pmd_at(struct mm_struct *mm, unsigned long addr,
 extern void set_pud_at(struct mm_struct *mm, unsigned long addr,
 		       pud_t *pudp, pud_t pud);
 
-static inline void update_mmu_cache_pmd(struct vm_area_struct *vma,
+static inline void update_mmu_cache_pmd(struct mm_area *vma,
 					unsigned long addr, pmd_t *pmd)
 {
 }
 
-static inline void update_mmu_cache_pud(struct vm_area_struct *vma,
+static inline void update_mmu_cache_pud(struct mm_area *vma,
 					unsigned long addr, pud_t *pud)
 {
 }
@@ -1284,19 +1284,19 @@ static inline pud_t pud_mkhuge(pud_t pud)
 
 
 #define __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS
-extern int pmdp_set_access_flags(struct vm_area_struct *vma,
+extern int pmdp_set_access_flags(struct mm_area *vma,
 				 unsigned long address, pmd_t *pmdp,
 				 pmd_t entry, int dirty);
 #define __HAVE_ARCH_PUDP_SET_ACCESS_FLAGS
-extern int pudp_set_access_flags(struct vm_area_struct *vma,
+extern int pudp_set_access_flags(struct mm_area *vma,
 				 unsigned long address, pud_t *pudp,
 				 pud_t entry, int dirty);
 
 #define __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG
-extern int pmdp_test_and_clear_young(struct vm_area_struct *vma,
+extern int pmdp_test_and_clear_young(struct mm_area *vma,
 				     unsigned long address, pmd_t *pmdp);
 #define __HAVE_ARCH_PUDP_TEST_AND_CLEAR_YOUNG
-extern int pudp_test_and_clear_young(struct vm_area_struct *vma,
+extern int pudp_test_and_clear_young(struct mm_area *vma,
 				     unsigned long address, pud_t *pudp);
 
 
@@ -1319,7 +1319,7 @@ static inline pud_t pudp_huge_get_and_clear(struct mm_struct *mm,
 	return *pudp;
 }
 
-static inline pmd_t pmdp_collapse_flush(struct vm_area_struct *vma,
+static inline pmd_t pmdp_collapse_flush(struct mm_area *vma,
 					unsigned long address, pmd_t *pmdp)
 {
 	if (radix_enabled())
@@ -1329,12 +1329,12 @@ static inline pmd_t pmdp_collapse_flush(struct vm_area_struct *vma,
 #define pmdp_collapse_flush pmdp_collapse_flush
 
 #define __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR_FULL
-pmd_t pmdp_huge_get_and_clear_full(struct vm_area_struct *vma,
+pmd_t pmdp_huge_get_and_clear_full(struct mm_area *vma,
 				   unsigned long addr,
 				   pmd_t *pmdp, int full);
 
 #define __HAVE_ARCH_PUDP_HUGE_GET_AND_CLEAR_FULL
-pud_t pudp_huge_get_and_clear_full(struct vm_area_struct *vma,
+pud_t pudp_huge_get_and_clear_full(struct mm_area *vma,
 				   unsigned long addr,
 				   pud_t *pudp, int full);
 
@@ -1357,16 +1357,16 @@ static inline pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm,
 }
 
 #define __HAVE_ARCH_PMDP_INVALIDATE
-extern pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
+extern pmd_t pmdp_invalidate(struct mm_area *vma, unsigned long address,
 			     pmd_t *pmdp);
-extern pud_t pudp_invalidate(struct vm_area_struct *vma, unsigned long address,
+extern pud_t pudp_invalidate(struct mm_area *vma, unsigned long address,
 			     pud_t *pudp);
 
 #define pmd_move_must_withdraw pmd_move_must_withdraw
 struct spinlock;
 extern int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
 				  struct spinlock *old_pmd_ptl,
-				  struct vm_area_struct *vma);
+				  struct mm_area *vma);
 /*
  * Hash translation mode use the deposited table to store hash pte
  * slot information.
@@ -1413,8 +1413,8 @@ static inline int pgd_devmap(pgd_t pgd)
 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
 
 #define __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION
-pte_t ptep_modify_prot_start(struct vm_area_struct *, unsigned long, pte_t *);
-void ptep_modify_prot_commit(struct vm_area_struct *, unsigned long,
+pte_t ptep_modify_prot_start(struct mm_area *, unsigned long, pte_t *);
+void ptep_modify_prot_commit(struct mm_area *, unsigned long,
 			     pte_t *, pte_t, pte_t);
 
 /*
diff --git a/arch/powerpc/include/asm/book3s/64/radix.h b/arch/powerpc/include/asm/book3s/64/radix.h
index 8f55ff74bb68..ffbeb52f4beb 100644
--- a/arch/powerpc/include/asm/book3s/64/radix.h
+++ b/arch/powerpc/include/asm/book3s/64/radix.h
@@ -143,11 +143,11 @@ extern void radix__mark_rodata_ro(void);
 extern void radix__mark_initmem_nx(void);
 #endif
 
-extern void radix__ptep_set_access_flags(struct vm_area_struct *vma, pte_t *ptep,
+extern void radix__ptep_set_access_flags(struct mm_area *vma, pte_t *ptep,
 					 pte_t entry, unsigned long address,
 					 int psize);
 
-extern void radix__ptep_modify_prot_commit(struct vm_area_struct *vma,
+extern void radix__ptep_modify_prot_commit(struct mm_area *vma,
 					   unsigned long addr, pte_t *ptep,
 					   pte_t old_pte, pte_t pte);
 
@@ -288,7 +288,7 @@ extern unsigned long radix__pmd_hugepage_update(struct mm_struct *mm, unsigned l
 extern unsigned long radix__pud_hugepage_update(struct mm_struct *mm, unsigned long addr,
 						pud_t *pudp, unsigned long clr,
 						unsigned long set);
-extern pmd_t radix__pmdp_collapse_flush(struct vm_area_struct *vma,
+extern pmd_t radix__pmdp_collapse_flush(struct mm_area *vma,
 				  unsigned long address, pmd_t *pmdp);
 extern void radix__pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
 					pgtable_t pgtable);
diff --git a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
index a38542259fab..369f7d20a25a 100644
--- a/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
+++ b/arch/powerpc/include/asm/book3s/64/tlbflush-radix.h
@@ -8,7 +8,7 @@
 #define RIC_FLUSH_PWC 1
 #define RIC_FLUSH_ALL 2
 
-struct vm_area_struct;
+struct mm_area;
 struct mm_struct;
 struct mmu_gather;
 
@@ -60,30 +60,30 @@ static inline void radix__flush_all_lpid_guest(unsigned int lpid)
 }
 #endif
 
-extern void radix__flush_hugetlb_tlb_range(struct vm_area_struct *vma,
+extern void radix__flush_hugetlb_tlb_range(struct mm_area *vma,
 					   unsigned long start, unsigned long end);
 extern void radix__flush_tlb_range_psize(struct mm_struct *mm, unsigned long start,
 					 unsigned long end, int psize);
 void radix__flush_tlb_pwc_range_psize(struct mm_struct *mm, unsigned long start,
 				      unsigned long end, int psize);
-extern void radix__flush_pmd_tlb_range(struct vm_area_struct *vma,
+extern void radix__flush_pmd_tlb_range(struct mm_area *vma,
 				       unsigned long start, unsigned long end);
-extern void radix__flush_pud_tlb_range(struct vm_area_struct *vma,
+extern void radix__flush_pud_tlb_range(struct mm_area *vma,
 				       unsigned long start, unsigned long end);
-extern void radix__flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+extern void radix__flush_tlb_range(struct mm_area *vma, unsigned long start,
 			    unsigned long end);
 extern void radix__flush_tlb_kernel_range(unsigned long start, unsigned long end);
 
 extern void radix__local_flush_tlb_mm(struct mm_struct *mm);
 extern void radix__local_flush_all_mm(struct mm_struct *mm);
-extern void radix__local_flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
+extern void radix__local_flush_tlb_page(struct mm_area *vma, unsigned long vmaddr);
 extern void radix__local_flush_tlb_page_psize(struct mm_struct *mm, unsigned long vmaddr,
 					      int psize);
 extern void radix__tlb_flush(struct mmu_gather *tlb);
 #ifdef CONFIG_SMP
 extern void radix__flush_tlb_mm(struct mm_struct *mm);
 extern void radix__flush_all_mm(struct mm_struct *mm);
-extern void radix__flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
+extern void radix__flush_tlb_page(struct mm_area *vma, unsigned long vmaddr);
 extern void radix__flush_tlb_page_psize(struct mm_struct *mm, unsigned long vmaddr,
 					int psize);
 #else
diff --git a/arch/powerpc/include/asm/book3s/64/tlbflush.h b/arch/powerpc/include/asm/book3s/64/tlbflush.h
index fd642b729775..73cc7feff758 100644
--- a/arch/powerpc/include/asm/book3s/64/tlbflush.h
+++ b/arch/powerpc/include/asm/book3s/64/tlbflush.h
@@ -44,7 +44,7 @@ static inline void tlbiel_all_lpid(bool radix)
 
 
 #define __HAVE_ARCH_FLUSH_PMD_TLB_RANGE
-static inline void flush_pmd_tlb_range(struct vm_area_struct *vma,
+static inline void flush_pmd_tlb_range(struct mm_area *vma,
 				       unsigned long start, unsigned long end)
 {
 	if (radix_enabled())
@@ -52,7 +52,7 @@ static inline void flush_pmd_tlb_range(struct vm_area_struct *vma,
 }
 
 #define __HAVE_ARCH_FLUSH_PUD_TLB_RANGE
-static inline void flush_pud_tlb_range(struct vm_area_struct *vma,
+static inline void flush_pud_tlb_range(struct mm_area *vma,
 				       unsigned long start, unsigned long end)
 {
 	if (radix_enabled())
@@ -60,7 +60,7 @@ static inline void flush_pud_tlb_range(struct vm_area_struct *vma,
 }
 
 #define __HAVE_ARCH_FLUSH_HUGETLB_TLB_RANGE
-static inline void flush_hugetlb_tlb_range(struct vm_area_struct *vma,
+static inline void flush_hugetlb_tlb_range(struct mm_area *vma,
 					   unsigned long start,
 					   unsigned long end)
 {
@@ -68,7 +68,7 @@ static inline void flush_hugetlb_tlb_range(struct vm_area_struct *vma,
 		radix__flush_hugetlb_tlb_range(vma, start, end);
 }
 
-static inline void flush_tlb_range(struct vm_area_struct *vma,
+static inline void flush_tlb_range(struct mm_area *vma,
 				   unsigned long start, unsigned long end)
 {
 	if (radix_enabled())
@@ -88,7 +88,7 @@ static inline void local_flush_tlb_mm(struct mm_struct *mm)
 		radix__local_flush_tlb_mm(mm);
 }
 
-static inline void local_flush_tlb_page(struct vm_area_struct *vma,
+static inline void local_flush_tlb_page(struct mm_area *vma,
 					unsigned long vmaddr)
 {
 	if (radix_enabled())
@@ -117,7 +117,7 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
 		radix__flush_tlb_mm(mm);
 }
 
-static inline void flush_tlb_page(struct vm_area_struct *vma,
+static inline void flush_tlb_page(struct mm_area *vma,
 				  unsigned long vmaddr)
 {
 	if (radix_enabled())
@@ -129,7 +129,7 @@ static inline void flush_tlb_page(struct vm_area_struct *vma,
 #endif /* CONFIG_SMP */
 
 #define flush_tlb_fix_spurious_fault flush_tlb_fix_spurious_fault
-static inline void flush_tlb_fix_spurious_fault(struct vm_area_struct *vma,
+static inline void flush_tlb_fix_spurious_fault(struct mm_area *vma,
 						unsigned long address,
 						pte_t *ptep)
 {
diff --git a/arch/powerpc/include/asm/cacheflush.h b/arch/powerpc/include/asm/cacheflush.h
index f2656774aaa9..a7be13f896ca 100644
--- a/arch/powerpc/include/asm/cacheflush.h
+++ b/arch/powerpc/include/asm/cacheflush.h
@@ -53,7 +53,7 @@ static inline void flush_dcache_page(struct page *page)
 void flush_icache_range(unsigned long start, unsigned long stop);
 #define flush_icache_range flush_icache_range
 
-void flush_icache_user_page(struct vm_area_struct *vma, struct page *page,
+void flush_icache_user_page(struct mm_area *vma, struct page *page,
 		unsigned long addr, int len);
 #define flush_icache_user_page flush_icache_user_page
 
diff --git a/arch/powerpc/include/asm/hugetlb.h b/arch/powerpc/include/asm/hugetlb.h
index 86326587e58d..84540436e22c 100644
--- a/arch/powerpc/include/asm/hugetlb.h
+++ b/arch/powerpc/include/asm/hugetlb.h
@@ -52,7 +52,7 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
 }
 
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
-static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+static inline pte_t huge_ptep_clear_flush(struct mm_area *vma,
 					  unsigned long addr, pte_t *ptep)
 {
 	pte_t pte;
@@ -64,7 +64,7 @@ static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
 }
 
 #define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
-int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+int huge_ptep_set_access_flags(struct mm_area *vma,
 			       unsigned long addr, pte_t *ptep,
 			       pte_t pte, int dirty);
 
@@ -72,7 +72,7 @@ void gigantic_hugetlb_cma_reserve(void) __init;
 #include <asm-generic/hugetlb.h>
 
 #else /* ! CONFIG_HUGETLB_PAGE */
-static inline void flush_hugetlb_page(struct vm_area_struct *vma,
+static inline void flush_hugetlb_page(struct mm_area *vma,
 				      unsigned long vmaddr)
 {
 }
diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
index a157ab513347..9677c3775f7a 100644
--- a/arch/powerpc/include/asm/mmu_context.h
+++ b/arch/powerpc/include/asm/mmu_context.h
@@ -258,11 +258,11 @@ static inline void enter_lazy_tlb(struct mm_struct *mm,
 extern void arch_exit_mmap(struct mm_struct *mm);
 
 #ifdef CONFIG_PPC_MEM_KEYS
-bool arch_vma_access_permitted(struct vm_area_struct *vma, bool write,
+bool arch_vma_access_permitted(struct mm_area *vma, bool write,
 			       bool execute, bool foreign);
 void arch_dup_pkeys(struct mm_struct *oldmm, struct mm_struct *mm);
 #else /* CONFIG_PPC_MEM_KEYS */
-static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
+static inline bool arch_vma_access_permitted(struct mm_area *vma,
 		bool write, bool execute, bool foreign)
 {
 	/* by default, allow everything */
diff --git a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
index 014799557f60..5f9e81383526 100644
--- a/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
+++ b/arch/powerpc/include/asm/nohash/32/hugetlb-8xx.h
@@ -4,7 +4,7 @@
 
 #define PAGE_SHIFT_8M		23
 
-static inline void flush_hugetlb_page(struct vm_area_struct *vma,
+static inline void flush_hugetlb_page(struct mm_area *vma,
 				      unsigned long vmaddr)
 {
 	flush_tlb_page(vma, vmaddr);
diff --git a/arch/powerpc/include/asm/nohash/32/pte-8xx.h b/arch/powerpc/include/asm/nohash/32/pte-8xx.h
index 54ebb91dbdcf..ac6c02a4c26e 100644
--- a/arch/powerpc/include/asm/nohash/32/pte-8xx.h
+++ b/arch/powerpc/include/asm/nohash/32/pte-8xx.h
@@ -128,7 +128,7 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long addr,
 }
 #define ptep_set_wrprotect ptep_set_wrprotect
 
-static inline void __ptep_set_access_flags(struct vm_area_struct *vma, pte_t *ptep,
+static inline void __ptep_set_access_flags(struct mm_area *vma, pte_t *ptep,
 					   pte_t entry, unsigned long address, int psize)
 {
 	unsigned long set = pte_val(entry) & (_PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_EXEC);
diff --git a/arch/powerpc/include/asm/nohash/hugetlb-e500.h b/arch/powerpc/include/asm/nohash/hugetlb-e500.h
index cab0e1f1eea0..788c610b8dff 100644
--- a/arch/powerpc/include/asm/nohash/hugetlb-e500.h
+++ b/arch/powerpc/include/asm/nohash/hugetlb-e500.h
@@ -2,7 +2,7 @@
 #ifndef _ASM_POWERPC_NOHASH_HUGETLB_E500_H
 #define _ASM_POWERPC_NOHASH_HUGETLB_E500_H
 
-void flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
+void flush_hugetlb_page(struct mm_area *vma, unsigned long vmaddr);
 
 static inline int check_and_get_huge_psize(int shift)
 {
diff --git a/arch/powerpc/include/asm/nohash/pgtable.h b/arch/powerpc/include/asm/nohash/pgtable.h
index 8d1f0b7062eb..0aad651197ef 100644
--- a/arch/powerpc/include/asm/nohash/pgtable.h
+++ b/arch/powerpc/include/asm/nohash/pgtable.h
@@ -99,7 +99,7 @@ static inline pte_basic_t pte_update(struct mm_struct *mm, unsigned long addr, p
 }
 #endif
 
-static inline int ptep_test_and_clear_young(struct vm_area_struct *vma,
+static inline int ptep_test_and_clear_young(struct mm_area *vma,
 					    unsigned long addr, pte_t *ptep)
 {
 	unsigned long old;
@@ -133,7 +133,7 @@ static inline void pte_clear(struct mm_struct *mm, unsigned long addr, pte_t *pt
 
 /* Set the dirty and/or accessed bits atomically in a linux PTE */
 #ifndef __ptep_set_access_flags
-static inline void __ptep_set_access_flags(struct vm_area_struct *vma,
+static inline void __ptep_set_access_flags(struct mm_area *vma,
 					   pte_t *ptep, pte_t entry,
 					   unsigned long address,
 					   int psize)
diff --git a/arch/powerpc/include/asm/nohash/tlbflush.h b/arch/powerpc/include/asm/nohash/tlbflush.h
index 9a2cf83ea4f1..8f013d3b3e17 100644
--- a/arch/powerpc/include/asm/nohash/tlbflush.h
+++ b/arch/powerpc/include/asm/nohash/tlbflush.h
@@ -23,12 +23,12 @@
  * specific tlbie's
  */
 
-struct vm_area_struct;
+struct mm_area;
 struct mm_struct;
 
 #define MMU_NO_CONTEXT      	((unsigned int)-1)
 
-extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+extern void flush_tlb_range(struct mm_area *vma, unsigned long start,
 			    unsigned long end);
 
 #ifdef CONFIG_PPC_8xx
@@ -40,7 +40,7 @@ static inline void local_flush_tlb_mm(struct mm_struct *mm)
 		asm volatile ("sync; tlbia; isync" : : : "memory");
 }
 
-static inline void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
+static inline void local_flush_tlb_page(struct mm_area *vma, unsigned long vmaddr)
 {
 	asm volatile ("tlbie %0; sync" : : "r" (vmaddr) : "memory");
 }
@@ -63,7 +63,7 @@ static inline void flush_tlb_kernel_range(unsigned long start, unsigned long end
 #else
 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
 extern void local_flush_tlb_mm(struct mm_struct *mm);
-extern void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
+extern void local_flush_tlb_page(struct mm_area *vma, unsigned long vmaddr);
 void local_flush_tlb_page_psize(struct mm_struct *mm, unsigned long vmaddr, int psize);
 
 extern void __local_flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr,
@@ -72,7 +72,7 @@ extern void __local_flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr,
 
 #ifdef CONFIG_SMP
 extern void flush_tlb_mm(struct mm_struct *mm);
-extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr);
+extern void flush_tlb_page(struct mm_area *vma, unsigned long vmaddr);
 extern void __flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr,
 			     int tsize, int ind);
 #else
diff --git a/arch/powerpc/include/asm/page.h b/arch/powerpc/include/asm/page.h
index af9a2628d1df..c5d6d4087e3c 100644
--- a/arch/powerpc/include/asm/page.h
+++ b/arch/powerpc/include/asm/page.h
@@ -280,7 +280,7 @@ void arch_free_page(struct page *page, int order);
 #define HAVE_ARCH_FREE_PAGE
 #endif
 
-struct vm_area_struct;
+struct mm_area;
 
 extern unsigned long kernstart_virt_addr;
 
diff --git a/arch/powerpc/include/asm/pci.h b/arch/powerpc/include/asm/pci.h
index 46a9c4491ed0..1fa9e34182b4 100644
--- a/arch/powerpc/include/asm/pci.h
+++ b/arch/powerpc/include/asm/pci.h
@@ -67,7 +67,7 @@ extern int pci_domain_nr(struct pci_bus *bus);
 /* Decide whether to display the domain number in /proc */
 extern int pci_proc_domain(struct pci_bus *bus);
 
-struct vm_area_struct;
+struct mm_area;
 
 /* Tell PCI code what kind of PCI resource mappings we support */
 #define HAVE_PCI_MMAP			1
@@ -80,7 +80,7 @@ extern int pci_legacy_read(struct pci_bus *bus, loff_t port, u32 *val,
 extern int pci_legacy_write(struct pci_bus *bus, loff_t port, u32 val,
 			   size_t count);
 extern int pci_mmap_legacy_page_range(struct pci_bus *bus,
-				      struct vm_area_struct *vma,
+				      struct mm_area *vma,
 				      enum pci_mmap_state mmap_state);
 extern void pci_adjust_legacy_attr(struct pci_bus *bus,
 				   enum pci_mmap_state mmap_type);
diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
index 2f72ad885332..d375c25ff925 100644
--- a/arch/powerpc/include/asm/pgtable.h
+++ b/arch/powerpc/include/asm/pgtable.h
@@ -119,7 +119,7 @@ static inline void mark_initmem_nx(void) { }
 #endif
 
 #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
-int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address,
+int ptep_set_access_flags(struct mm_area *vma, unsigned long address,
 			  pte_t *ptep, pte_t entry, int dirty);
 
 pgprot_t __phys_mem_access_prot(unsigned long pfn, unsigned long size,
@@ -133,7 +133,7 @@ static inline pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn
 }
 #define __HAVE_PHYS_MEM_ACCESS_PROT
 
-void __update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *ptep);
+void __update_mmu_cache(struct mm_area *vma, unsigned long address, pte_t *ptep);
 
 /*
  * This gets called at the end of handling a page fault, when
@@ -145,7 +145,7 @@ void __update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t
  * waiting for the inevitable extra hash-table miss exception.
  */
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long address,
+		struct mm_area *vma, unsigned long address,
 		pte_t *ptep, unsigned int nr)
 {
 	if ((mmu_has_feature(MMU_FTR_HPTE_TABLE) && !radix_enabled()) ||
diff --git a/arch/powerpc/include/asm/pkeys.h b/arch/powerpc/include/asm/pkeys.h
index 59a2c7dbc78f..b36ac2edf846 100644
--- a/arch/powerpc/include/asm/pkeys.h
+++ b/arch/powerpc/include/asm/pkeys.h
@@ -35,7 +35,7 @@ static inline u64 pkey_to_vmflag_bits(u16 pkey)
 	return (((u64)pkey << VM_PKEY_SHIFT) & ARCH_VM_PKEY_FLAGS);
 }
 
-static inline int vma_pkey(struct vm_area_struct *vma)
+static inline int vma_pkey(struct mm_area *vma)
 {
 	if (!mmu_has_feature(MMU_FTR_PKEY))
 		return 0;
@@ -125,9 +125,9 @@ static inline int mm_pkey_free(struct mm_struct *mm, int pkey)
  * execute-only protection key.
  */
 extern int execute_only_pkey(struct mm_struct *mm);
-extern int __arch_override_mprotect_pkey(struct vm_area_struct *vma,
+extern int __arch_override_mprotect_pkey(struct mm_area *vma,
 					 int prot, int pkey);
-static inline int arch_override_mprotect_pkey(struct vm_area_struct *vma,
+static inline int arch_override_mprotect_pkey(struct mm_area *vma,
 					      int prot, int pkey)
 {
 	if (!mmu_has_feature(MMU_FTR_PKEY))
diff --git a/arch/powerpc/include/asm/vas.h b/arch/powerpc/include/asm/vas.h
index c36f71e01c0f..086d494bd3d9 100644
--- a/arch/powerpc/include/asm/vas.h
+++ b/arch/powerpc/include/asm/vas.h
@@ -71,7 +71,7 @@ struct vas_user_win_ref {
 	struct mm_struct *mm;	/* Linux process mm_struct */
 	struct mutex mmap_mutex;	/* protects paste address mmap() */
 					/* with DLPAR close/open windows */
-	struct vm_area_struct *vma;	/* Save VMA and used in DLPAR ops */
+	struct mm_area *vma;	/* Save VMA and used in DLPAR ops */
 };
 
 /*
diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index eac84d687b53..ce9a82d8120f 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -501,7 +501,7 @@ static int pci_read_irq_line(struct pci_dev *pci_dev)
  * Platform support for /proc/bus/pci/X/Y mmap()s.
  *  -- paulus.
  */
-int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct vm_area_struct *vma)
+int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct mm_area *vma)
 {
 	struct pci_controller *hose = pci_bus_to_host(pdev->bus);
 	resource_size_t ioaddr = pci_resource_start(pdev, bar);
@@ -651,7 +651,7 @@ int pci_legacy_write(struct pci_bus *bus, loff_t port, u32 val, size_t size)
 
 /* This provides legacy IO or memory mmap access on a bus */
 int pci_mmap_legacy_page_range(struct pci_bus *bus,
-			       struct vm_area_struct *vma,
+			       struct mm_area *vma,
 			       enum pci_mmap_state mmap_state)
 {
 	struct pci_controller *hose = pci_bus_to_host(bus);
diff --git a/arch/powerpc/kernel/proc_powerpc.c b/arch/powerpc/kernel/proc_powerpc.c
index 3816a2bf2b84..c80bc0cb32db 100644
--- a/arch/powerpc/kernel/proc_powerpc.c
+++ b/arch/powerpc/kernel/proc_powerpc.c
@@ -30,7 +30,7 @@ static ssize_t page_map_read( struct file *file, char __user *buf, size_t nbytes
 			pde_data(file_inode(file)), PAGE_SIZE);
 }
 
-static int page_map_mmap( struct file *file, struct vm_area_struct *vma )
+static int page_map_mmap( struct file *file, struct mm_area *vma )
 {
 	if ((vma->vm_end - vma->vm_start) > PAGE_SIZE)
 		return -EINVAL;
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c
index 219d67bcf747..f6a853ae5dc7 100644
--- a/arch/powerpc/kernel/vdso.c
+++ b/arch/powerpc/kernel/vdso.c
@@ -42,7 +42,7 @@ extern char vdso64_start, vdso64_end;
 
 long sys_ni_syscall(void);
 
-static int vdso_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma,
+static int vdso_mremap(const struct vm_special_mapping *sm, struct mm_area *new_vma,
 		       unsigned long text_size)
 {
 	unsigned long new_size = new_vma->vm_end - new_vma->vm_start;
@@ -55,17 +55,17 @@ static int vdso_mremap(const struct vm_special_mapping *sm, struct vm_area_struc
 	return 0;
 }
 
-static int vdso32_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma)
+static int vdso32_mremap(const struct vm_special_mapping *sm, struct mm_area *new_vma)
 {
 	return vdso_mremap(sm, new_vma, &vdso32_end - &vdso32_start);
 }
 
-static int vdso64_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma)
+static int vdso64_mremap(const struct vm_special_mapping *sm, struct mm_area *new_vma)
 {
 	return vdso_mremap(sm, new_vma, &vdso64_end - &vdso64_start);
 }
 
-static void vdso_close(const struct vm_special_mapping *sm, struct vm_area_struct *vma)
+static void vdso_close(const struct vm_special_mapping *sm, struct mm_area *vma)
 {
 	struct mm_struct *mm = vma->vm_mm;
 
@@ -102,7 +102,7 @@ static int __arch_setup_additional_pages(struct linux_binprm *bprm, int uses_int
 	struct vm_special_mapping *vdso_spec;
 	unsigned long vvar_size = VDSO_NR_PAGES * PAGE_SIZE;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	if (is_32bit_task()) {
 		vdso_spec = &vdso32_spec;
diff --git a/arch/powerpc/kvm/book3s_64_vio.c b/arch/powerpc/kvm/book3s_64_vio.c
index 742aa58a7c7e..236d3f95c4dd 100644
--- a/arch/powerpc/kvm/book3s_64_vio.c
+++ b/arch/powerpc/kvm/book3s_64_vio.c
@@ -247,7 +247,7 @@ static const struct vm_operations_struct kvm_spapr_tce_vm_ops = {
 	.fault = kvm_spapr_tce_fault,
 };
 
-static int kvm_spapr_tce_mmap(struct file *file, struct vm_area_struct *vma)
+static int kvm_spapr_tce_mmap(struct file *file, struct mm_area *vma)
 {
 	vma->vm_ops = &kvm_spapr_tce_vm_ops;
 	return 0;
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 86bff159c51e..62de957ec6da 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -5473,7 +5473,7 @@ static int kvmppc_hv_setup_htab_rma(struct kvm_vcpu *vcpu)
 	struct kvm *kvm = vcpu->kvm;
 	unsigned long hva;
 	struct kvm_memory_slot *memslot;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long lpcr = 0, senc;
 	unsigned long psize, porder;
 	int srcu_idx;
diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c
index 3a6592a31a10..16a49d4b5e47 100644
--- a/arch/powerpc/kvm/book3s_hv_uvmem.c
+++ b/arch/powerpc/kvm/book3s_hv_uvmem.c
@@ -395,7 +395,7 @@ static int kvmppc_memslot_page_merge(struct kvm *kvm,
 	unsigned long end, start = gfn_to_hva(kvm, gfn);
 	unsigned long vm_flags;
 	int ret = 0;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int merge_flag = (merge) ? MADV_MERGEABLE : MADV_UNMERGEABLE;
 
 	if (kvm_is_error_hva(start))
@@ -510,7 +510,7 @@ unsigned long kvmppc_h_svm_init_start(struct kvm *kvm)
  * from secure memory using UV_PAGE_OUT uvcall.
  * Caller must held kvm->arch.uvmem_lock.
  */
-static int __kvmppc_svm_page_out(struct vm_area_struct *vma,
+static int __kvmppc_svm_page_out(struct mm_area *vma,
 		unsigned long start,
 		unsigned long end, unsigned long page_shift,
 		struct kvm *kvm, unsigned long gpa, struct page *fault_page)
@@ -583,7 +583,7 @@ static int __kvmppc_svm_page_out(struct vm_area_struct *vma,
 	return ret;
 }
 
-static inline int kvmppc_svm_page_out(struct vm_area_struct *vma,
+static inline int kvmppc_svm_page_out(struct mm_area *vma,
 				      unsigned long start, unsigned long end,
 				      unsigned long page_shift,
 				      struct kvm *kvm, unsigned long gpa,
@@ -613,7 +613,7 @@ void kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *slot,
 	int i;
 	struct kvmppc_uvmem_page_pvt *pvt;
 	struct page *uvmem_page;
-	struct vm_area_struct *vma = NULL;
+	struct mm_area *vma = NULL;
 	unsigned long uvmem_pfn, gfn;
 	unsigned long addr;
 
@@ -737,7 +737,7 @@ static struct page *kvmppc_uvmem_get_page(unsigned long gpa, struct kvm *kvm)
  * Alloc a PFN from private device memory pool. If @pagein is true,
  * copy page from normal memory to secure memory using UV_PAGE_IN uvcall.
  */
-static int kvmppc_svm_page_in(struct vm_area_struct *vma,
+static int kvmppc_svm_page_in(struct mm_area *vma,
 		unsigned long start,
 		unsigned long end, unsigned long gpa, struct kvm *kvm,
 		unsigned long page_shift,
@@ -795,7 +795,7 @@ static int kvmppc_uv_migrate_mem_slot(struct kvm *kvm,
 		const struct kvm_memory_slot *memslot)
 {
 	unsigned long gfn = memslot->base_gfn;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long start, end;
 	int ret = 0;
 
@@ -937,7 +937,7 @@ unsigned long kvmppc_h_svm_page_in(struct kvm *kvm, unsigned long gpa,
 		unsigned long page_shift)
 {
 	unsigned long start, end;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int srcu_idx;
 	unsigned long gfn = gpa >> page_shift;
 	int ret;
@@ -1047,7 +1047,7 @@ kvmppc_h_svm_page_out(struct kvm *kvm, unsigned long gpa,
 {
 	unsigned long gfn = gpa >> page_shift;
 	unsigned long start, end;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int srcu_idx;
 	int ret;
 
diff --git a/arch/powerpc/kvm/book3s_xive_native.c b/arch/powerpc/kvm/book3s_xive_native.c
index d9bf1bc3ff61..90ff2d0ed2a7 100644
--- a/arch/powerpc/kvm/book3s_xive_native.c
+++ b/arch/powerpc/kvm/book3s_xive_native.c
@@ -227,7 +227,7 @@ static struct kvmppc_xive_ops kvmppc_xive_native_ops =  {
 
 static vm_fault_t xive_native_esb_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct kvm_device *dev = vma->vm_file->private_data;
 	struct kvmppc_xive *xive = dev->private;
 	struct kvmppc_xive_src_block *sb;
@@ -287,7 +287,7 @@ static const struct vm_operations_struct xive_native_esb_vmops = {
 
 static vm_fault_t xive_native_tima_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 
 	switch (vmf->pgoff - vma->vm_pgoff) {
 	case 0: /* HW - forbid access */
@@ -307,7 +307,7 @@ static const struct vm_operations_struct xive_native_tima_vmops = {
 };
 
 static int kvmppc_xive_native_mmap(struct kvm_device *dev,
-				   struct vm_area_struct *vma)
+				   struct mm_area *vma)
 {
 	struct kvmppc_xive *xive = dev->private;
 
diff --git a/arch/powerpc/mm/book3s32/mmu.c b/arch/powerpc/mm/book3s32/mmu.c
index be9c4106e22f..438af9822627 100644
--- a/arch/powerpc/mm/book3s32/mmu.c
+++ b/arch/powerpc/mm/book3s32/mmu.c
@@ -319,7 +319,7 @@ static void hash_preload(struct mm_struct *mm, unsigned long ea)
  *
  * This must always be called with the pte lock held.
  */
-void __update_mmu_cache(struct vm_area_struct *vma, unsigned long address,
+void __update_mmu_cache(struct mm_area *vma, unsigned long address,
 		      pte_t *ptep)
 {
 	/*
diff --git a/arch/powerpc/mm/book3s32/tlb.c b/arch/powerpc/mm/book3s32/tlb.c
index 9ad6b56bfec9..badcf34a99b4 100644
--- a/arch/powerpc/mm/book3s32/tlb.c
+++ b/arch/powerpc/mm/book3s32/tlb.c
@@ -80,7 +80,7 @@ EXPORT_SYMBOL(hash__flush_range);
  */
 void hash__flush_tlb_mm(struct mm_struct *mm)
 {
-	struct vm_area_struct *mp;
+	struct mm_area *mp;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	/*
@@ -94,7 +94,7 @@ void hash__flush_tlb_mm(struct mm_struct *mm)
 }
 EXPORT_SYMBOL(hash__flush_tlb_mm);
 
-void hash__flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
+void hash__flush_tlb_page(struct mm_area *vma, unsigned long vmaddr)
 {
 	struct mm_struct *mm;
 	pmd_t *pmd;
diff --git a/arch/powerpc/mm/book3s64/hash_pgtable.c b/arch/powerpc/mm/book3s64/hash_pgtable.c
index 988948d69bc1..444a148f54f8 100644
--- a/arch/powerpc/mm/book3s64/hash_pgtable.c
+++ b/arch/powerpc/mm/book3s64/hash_pgtable.c
@@ -220,7 +220,7 @@ unsigned long hash__pmd_hugepage_update(struct mm_struct *mm, unsigned long addr
 	return old;
 }
 
-pmd_t hash__pmdp_collapse_flush(struct vm_area_struct *vma, unsigned long address,
+pmd_t hash__pmdp_collapse_flush(struct mm_area *vma, unsigned long address,
 			    pmd_t *pmdp)
 {
 	pmd_t pmd;
diff --git a/arch/powerpc/mm/book3s64/hash_utils.c b/arch/powerpc/mm/book3s64/hash_utils.c
index 5158aefe4873..8a135a261f2e 100644
--- a/arch/powerpc/mm/book3s64/hash_utils.c
+++ b/arch/powerpc/mm/book3s64/hash_utils.c
@@ -2099,7 +2099,7 @@ static void hash_preload(struct mm_struct *mm, pte_t *ptep, unsigned long ea,
  *
  * This must always be called with the pte lock held.
  */
-void __update_mmu_cache(struct vm_area_struct *vma, unsigned long address,
+void __update_mmu_cache(struct mm_area *vma, unsigned long address,
 		      pte_t *ptep)
 {
 	/*
diff --git a/arch/powerpc/mm/book3s64/hugetlbpage.c b/arch/powerpc/mm/book3s64/hugetlbpage.c
index 83c3361b358b..a26f928dbf56 100644
--- a/arch/powerpc/mm/book3s64/hugetlbpage.c
+++ b/arch/powerpc/mm/book3s64/hugetlbpage.c
@@ -135,7 +135,7 @@ int __hash_page_huge(unsigned long ea, unsigned long access, unsigned long vsid,
 }
 #endif
 
-pte_t huge_ptep_modify_prot_start(struct vm_area_struct *vma,
+pte_t huge_ptep_modify_prot_start(struct mm_area *vma,
 				  unsigned long addr, pte_t *ptep)
 {
 	unsigned long pte_val;
@@ -150,7 +150,7 @@ pte_t huge_ptep_modify_prot_start(struct vm_area_struct *vma,
 	return __pte(pte_val);
 }
 
-void huge_ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr,
+void huge_ptep_modify_prot_commit(struct mm_area *vma, unsigned long addr,
 				  pte_t *ptep, pte_t old_pte, pte_t pte)
 {
 	unsigned long psize;
diff --git a/arch/powerpc/mm/book3s64/iommu_api.c b/arch/powerpc/mm/book3s64/iommu_api.c
index c0e8d597e4cb..fbf8a7ae297a 100644
--- a/arch/powerpc/mm/book3s64/iommu_api.c
+++ b/arch/powerpc/mm/book3s64/iommu_api.c
@@ -98,7 +98,7 @@ static long mm_iommu_do_alloc(struct mm_struct *mm, unsigned long ua,
 
 	mmap_read_lock(mm);
 	chunk = (1UL << (PAGE_SHIFT + MAX_PAGE_ORDER)) /
-			sizeof(struct vm_area_struct *);
+			sizeof(struct mm_area *);
 	chunk = min(chunk, entries);
 	for (entry = 0; entry < entries; entry += chunk) {
 		unsigned long n = min(entries - entry, chunk);
diff --git a/arch/powerpc/mm/book3s64/pgtable.c b/arch/powerpc/mm/book3s64/pgtable.c
index 8f7d41ce2ca1..58f7938e9872 100644
--- a/arch/powerpc/mm/book3s64/pgtable.c
+++ b/arch/powerpc/mm/book3s64/pgtable.c
@@ -57,7 +57,7 @@ early_param("kfence.sample_interval", parse_kfence_early_init);
  * handled those two for us, we additionally deal with missing execute
  * permission here on some processors
  */
-int pmdp_set_access_flags(struct vm_area_struct *vma, unsigned long address,
+int pmdp_set_access_flags(struct mm_area *vma, unsigned long address,
 			  pmd_t *pmdp, pmd_t entry, int dirty)
 {
 	int changed;
@@ -77,7 +77,7 @@ int pmdp_set_access_flags(struct vm_area_struct *vma, unsigned long address,
 	return changed;
 }
 
-int pudp_set_access_flags(struct vm_area_struct *vma, unsigned long address,
+int pudp_set_access_flags(struct mm_area *vma, unsigned long address,
 			  pud_t *pudp, pud_t entry, int dirty)
 {
 	int changed;
@@ -98,13 +98,13 @@ int pudp_set_access_flags(struct vm_area_struct *vma, unsigned long address,
 }
 
 
-int pmdp_test_and_clear_young(struct vm_area_struct *vma,
+int pmdp_test_and_clear_young(struct mm_area *vma,
 			      unsigned long address, pmd_t *pmdp)
 {
 	return __pmdp_test_and_clear_young(vma->vm_mm, address, pmdp);
 }
 
-int pudp_test_and_clear_young(struct vm_area_struct *vma,
+int pudp_test_and_clear_young(struct mm_area *vma,
 			      unsigned long address, pud_t *pudp)
 {
 	return __pudp_test_and_clear_young(vma->vm_mm, address, pudp);
@@ -177,7 +177,7 @@ void serialize_against_pte_lookup(struct mm_struct *mm)
  * We use this to invalidate a pmdp entry before switching from a
  * hugepte to regular pmd entry.
  */
-pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
+pmd_t pmdp_invalidate(struct mm_area *vma, unsigned long address,
 		     pmd_t *pmdp)
 {
 	unsigned long old_pmd;
@@ -188,7 +188,7 @@ pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
 	return __pmd(old_pmd);
 }
 
-pud_t pudp_invalidate(struct vm_area_struct *vma, unsigned long address,
+pud_t pudp_invalidate(struct mm_area *vma, unsigned long address,
 		      pud_t *pudp)
 {
 	unsigned long old_pud;
@@ -199,7 +199,7 @@ pud_t pudp_invalidate(struct vm_area_struct *vma, unsigned long address,
 	return __pud(old_pud);
 }
 
-pmd_t pmdp_huge_get_and_clear_full(struct vm_area_struct *vma,
+pmd_t pmdp_huge_get_and_clear_full(struct mm_area *vma,
 				   unsigned long addr, pmd_t *pmdp, int full)
 {
 	pmd_t pmd;
@@ -217,7 +217,7 @@ pmd_t pmdp_huge_get_and_clear_full(struct vm_area_struct *vma,
 	return pmd;
 }
 
-pud_t pudp_huge_get_and_clear_full(struct vm_area_struct *vma,
+pud_t pudp_huge_get_and_clear_full(struct mm_area *vma,
 				   unsigned long addr, pud_t *pudp, int full)
 {
 	pud_t pud;
@@ -534,7 +534,7 @@ void arch_report_meminfo(struct seq_file *m)
 }
 #endif /* CONFIG_PROC_FS */
 
-pte_t ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr,
+pte_t ptep_modify_prot_start(struct mm_area *vma, unsigned long addr,
 			     pte_t *ptep)
 {
 	unsigned long pte_val;
@@ -550,7 +550,7 @@ pte_t ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr,
 
 }
 
-void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr,
+void ptep_modify_prot_commit(struct mm_area *vma, unsigned long addr,
 			     pte_t *ptep, pte_t old_pte, pte_t pte)
 {
 	if (radix_enabled())
@@ -574,7 +574,7 @@ void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr,
  */
 int pmd_move_must_withdraw(struct spinlock *new_pmd_ptl,
 			   struct spinlock *old_pmd_ptl,
-			   struct vm_area_struct *vma)
+			   struct mm_area *vma)
 {
 	if (radix_enabled())
 		return (new_pmd_ptl != old_pmd_ptl) && vma_is_anonymous(vma);
diff --git a/arch/powerpc/mm/book3s64/pkeys.c b/arch/powerpc/mm/book3s64/pkeys.c
index a974baf8f327..3bdeb406fa0f 100644
--- a/arch/powerpc/mm/book3s64/pkeys.c
+++ b/arch/powerpc/mm/book3s64/pkeys.c
@@ -376,7 +376,7 @@ int execute_only_pkey(struct mm_struct *mm)
 	return mm->context.execute_only_pkey;
 }
 
-static inline bool vma_is_pkey_exec_only(struct vm_area_struct *vma)
+static inline bool vma_is_pkey_exec_only(struct mm_area *vma)
 {
 	/* Do this check first since the vm_flags should be hot */
 	if ((vma->vm_flags & VM_ACCESS_FLAGS) != VM_EXEC)
@@ -388,7 +388,7 @@ static inline bool vma_is_pkey_exec_only(struct vm_area_struct *vma)
 /*
  * This should only be called for *plain* mprotect calls.
  */
-int __arch_override_mprotect_pkey(struct vm_area_struct *vma, int prot,
+int __arch_override_mprotect_pkey(struct mm_area *vma, int prot,
 				  int pkey)
 {
 	/*
@@ -444,7 +444,7 @@ bool arch_pte_access_permitted(u64 pte, bool write, bool execute)
  * So do not enforce things if the VMA is not from the current mm, or if we are
  * in a kernel thread.
  */
-bool arch_vma_access_permitted(struct vm_area_struct *vma, bool write,
+bool arch_vma_access_permitted(struct mm_area *vma, bool write,
 			       bool execute, bool foreign)
 {
 	if (!mmu_has_feature(MMU_FTR_PKEY))
diff --git a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
index 35fd2a95be24..81569a2ec474 100644
--- a/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
+++ b/arch/powerpc/mm/book3s64/radix_hugetlbpage.c
@@ -7,7 +7,7 @@
 #include <asm/mman.h>
 #include <asm/tlb.h>
 
-void radix__flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
+void radix__flush_hugetlb_page(struct mm_area *vma, unsigned long vmaddr)
 {
 	int psize;
 	struct hstate *hstate = hstate_file(vma->vm_file);
@@ -16,7 +16,7 @@ void radix__flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
 	radix__flush_tlb_page_psize(vma->vm_mm, vmaddr, psize);
 }
 
-void radix__local_flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
+void radix__local_flush_hugetlb_page(struct mm_area *vma, unsigned long vmaddr)
 {
 	int psize;
 	struct hstate *hstate = hstate_file(vma->vm_file);
@@ -25,7 +25,7 @@ void radix__local_flush_hugetlb_page(struct vm_area_struct *vma, unsigned long v
 	radix__local_flush_tlb_page_psize(vma->vm_mm, vmaddr, psize);
 }
 
-void radix__flush_hugetlb_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void radix__flush_hugetlb_tlb_range(struct mm_area *vma, unsigned long start,
 				   unsigned long end)
 {
 	int psize;
@@ -42,7 +42,7 @@ void radix__flush_hugetlb_tlb_range(struct vm_area_struct *vma, unsigned long st
 	mmu_notifier_arch_invalidate_secondary_tlbs(vma->vm_mm, start, end);
 }
 
-void radix__huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
+void radix__huge_ptep_modify_prot_commit(struct mm_area *vma,
 					 unsigned long addr, pte_t *ptep,
 					 pte_t old_pte, pte_t pte)
 {
diff --git a/arch/powerpc/mm/book3s64/radix_pgtable.c b/arch/powerpc/mm/book3s64/radix_pgtable.c
index 311e2112d782..abb8ee24f4ec 100644
--- a/arch/powerpc/mm/book3s64/radix_pgtable.c
+++ b/arch/powerpc/mm/book3s64/radix_pgtable.c
@@ -1439,7 +1439,7 @@ unsigned long radix__pud_hugepage_update(struct mm_struct *mm, unsigned long add
 	return old;
 }
 
-pmd_t radix__pmdp_collapse_flush(struct vm_area_struct *vma, unsigned long address,
+pmd_t radix__pmdp_collapse_flush(struct mm_area *vma, unsigned long address,
 			pmd_t *pmdp)
 
 {
@@ -1528,7 +1528,7 @@ pud_t radix__pudp_huge_get_and_clear(struct mm_struct *mm,
 
 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
 
-void radix__ptep_set_access_flags(struct vm_area_struct *vma, pte_t *ptep,
+void radix__ptep_set_access_flags(struct mm_area *vma, pte_t *ptep,
 				  pte_t entry, unsigned long address, int psize)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -1570,7 +1570,7 @@ void radix__ptep_set_access_flags(struct vm_area_struct *vma, pte_t *ptep,
 	/* See ptesync comment in radix__set_pte_at */
 }
 
-void radix__ptep_modify_prot_commit(struct vm_area_struct *vma,
+void radix__ptep_modify_prot_commit(struct mm_area *vma,
 				    unsigned long addr, pte_t *ptep,
 				    pte_t old_pte, pte_t pte)
 {
diff --git a/arch/powerpc/mm/book3s64/radix_tlb.c b/arch/powerpc/mm/book3s64/radix_tlb.c
index 9e1f6558d026..522515490a77 100644
--- a/arch/powerpc/mm/book3s64/radix_tlb.c
+++ b/arch/powerpc/mm/book3s64/radix_tlb.c
@@ -625,7 +625,7 @@ void radix__local_flush_tlb_page_psize(struct mm_struct *mm, unsigned long vmadd
 	preempt_enable();
 }
 
-void radix__local_flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
+void radix__local_flush_tlb_page(struct mm_area *vma, unsigned long vmaddr)
 {
 #ifdef CONFIG_HUGETLB_PAGE
 	/* need the return fix for nohash.c */
@@ -947,7 +947,7 @@ void radix__flush_tlb_page_psize(struct mm_struct *mm, unsigned long vmaddr,
 	preempt_enable();
 }
 
-void radix__flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
+void radix__flush_tlb_page(struct mm_area *vma, unsigned long vmaddr)
 {
 #ifdef CONFIG_HUGETLB_PAGE
 	if (is_vm_hugetlb_page(vma))
@@ -1114,7 +1114,7 @@ static inline void __radix__flush_tlb_range(struct mm_struct *mm,
 	mmu_notifier_arch_invalidate_secondary_tlbs(mm, start, end);
 }
 
-void radix__flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void radix__flush_tlb_range(struct mm_area *vma, unsigned long start,
 		     unsigned long end)
 
 {
@@ -1360,14 +1360,14 @@ void radix__flush_tlb_collapsed_pmd(struct mm_struct *mm, unsigned long addr)
 }
 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
 
-void radix__flush_pmd_tlb_range(struct vm_area_struct *vma,
+void radix__flush_pmd_tlb_range(struct mm_area *vma,
 				unsigned long start, unsigned long end)
 {
 	radix__flush_tlb_range_psize(vma->vm_mm, start, end, MMU_PAGE_2M);
 }
 EXPORT_SYMBOL(radix__flush_pmd_tlb_range);
 
-void radix__flush_pud_tlb_range(struct vm_area_struct *vma,
+void radix__flush_pud_tlb_range(struct mm_area *vma,
 				unsigned long start, unsigned long end)
 {
 	radix__flush_tlb_range_psize(vma->vm_mm, start, end, MMU_PAGE_1G);
diff --git a/arch/powerpc/mm/book3s64/slice.c b/arch/powerpc/mm/book3s64/slice.c
index 28bec5bc7879..7ea8f4a1046b 100644
--- a/arch/powerpc/mm/book3s64/slice.c
+++ b/arch/powerpc/mm/book3s64/slice.c
@@ -86,7 +86,7 @@ static void slice_range_to_mask(unsigned long start, unsigned long len,
 static int slice_area_is_free(struct mm_struct *mm, unsigned long addr,
 			      unsigned long len)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	if ((mm_ctx_slb_addr_limit(&mm->context) - len) < addr)
 		return 0;
@@ -808,7 +808,7 @@ int slice_is_hugepage_only_range(struct mm_struct *mm, unsigned long addr,
 	return !slice_check_range_fits(mm, maskp, addr, len);
 }
 
-unsigned long vma_mmu_pagesize(struct vm_area_struct *vma)
+unsigned long vma_mmu_pagesize(struct mm_area *vma)
 {
 	/* With radix we don't use slice, so derive it from vma*/
 	if (radix_enabled())
diff --git a/arch/powerpc/mm/book3s64/subpage_prot.c b/arch/powerpc/mm/book3s64/subpage_prot.c
index ec98e526167e..574aa22bb238 100644
--- a/arch/powerpc/mm/book3s64/subpage_prot.c
+++ b/arch/powerpc/mm/book3s64/subpage_prot.c
@@ -138,7 +138,7 @@ static void subpage_prot_clear(unsigned long addr, unsigned long len)
 static int subpage_walk_pmd_entry(pmd_t *pmd, unsigned long addr,
 				  unsigned long end, struct mm_walk *walk)
 {
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	split_huge_pmd(vma, pmd, addr);
 	return 0;
 }
@@ -151,7 +151,7 @@ static const struct mm_walk_ops subpage_walk_ops = {
 static void subpage_mark_vma_nohuge(struct mm_struct *mm, unsigned long addr,
 				    unsigned long len)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, addr);
 
 	/*
diff --git a/arch/powerpc/mm/cacheflush.c b/arch/powerpc/mm/cacheflush.c
index 7186516eca52..75547ebd112c 100644
--- a/arch/powerpc/mm/cacheflush.c
+++ b/arch/powerpc/mm/cacheflush.c
@@ -210,7 +210,7 @@ void copy_user_page(void *vto, void *vfrom, unsigned long vaddr,
 	flush_dcache_page(pg);
 }
 
-void flush_icache_user_page(struct vm_area_struct *vma, struct page *page,
+void flush_icache_user_page(struct mm_area *vma, struct page *page,
 			     unsigned long addr, int len)
 {
 	void *maddr;
diff --git a/arch/powerpc/mm/copro_fault.c b/arch/powerpc/mm/copro_fault.c
index f5f8692e2c69..b6196e004f19 100644
--- a/arch/powerpc/mm/copro_fault.c
+++ b/arch/powerpc/mm/copro_fault.c
@@ -21,7 +21,7 @@
 int copro_handle_mm_fault(struct mm_struct *mm, unsigned long ea,
 		unsigned long dsisr, vm_fault_t *flt)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long is_write;
 	int ret;
 
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c
index c156fe0d53c3..45b8039647f6 100644
--- a/arch/powerpc/mm/fault.c
+++ b/arch/powerpc/mm/fault.c
@@ -72,7 +72,7 @@ static noinline int bad_area_nosemaphore(struct pt_regs *regs, unsigned long add
 }
 
 static int __bad_area(struct pt_regs *regs, unsigned long address, int si_code,
-		      struct mm_struct *mm, struct vm_area_struct *vma)
+		      struct mm_struct *mm, struct mm_area *vma)
 {
 
 	/*
@@ -89,7 +89,7 @@ static int __bad_area(struct pt_regs *regs, unsigned long address, int si_code,
 
 static noinline int bad_access_pkey(struct pt_regs *regs, unsigned long address,
 				    struct mm_struct *mm,
-				    struct vm_area_struct *vma)
+				    struct mm_area *vma)
 {
 	int pkey;
 
@@ -131,7 +131,7 @@ static noinline int bad_access_pkey(struct pt_regs *regs, unsigned long address,
 }
 
 static noinline int bad_access(struct pt_regs *regs, unsigned long address,
-			       struct mm_struct *mm, struct vm_area_struct *vma)
+			       struct mm_struct *mm, struct mm_area *vma)
 {
 	return __bad_area(regs, address, SEGV_ACCERR, mm, vma);
 }
@@ -235,7 +235,7 @@ static bool bad_kernel_fault(struct pt_regs *regs, unsigned long error_code,
 }
 
 static bool access_pkey_error(bool is_write, bool is_exec, bool is_pkey,
-			      struct vm_area_struct *vma)
+			      struct mm_area *vma)
 {
 	/*
 	 * Make sure to check the VMA so that we do not perform
@@ -248,7 +248,7 @@ static bool access_pkey_error(bool is_write, bool is_exec, bool is_pkey,
 	return false;
 }
 
-static bool access_error(bool is_write, bool is_exec, struct vm_area_struct *vma)
+static bool access_error(bool is_write, bool is_exec, struct mm_area *vma)
 {
 	/*
 	 * Allow execution from readable areas if the MMU does not
@@ -413,7 +413,7 @@ static int page_fault_is_bad(unsigned long err)
 static int ___do_page_fault(struct pt_regs *regs, unsigned long address,
 			   unsigned long error_code)
 {
-	struct vm_area_struct * vma;
+	struct mm_area * vma;
 	struct mm_struct *mm = current->mm;
 	unsigned int flags = FAULT_FLAG_DEFAULT;
 	int is_exec = TRAP(regs) == INTERRUPT_INST_STORAGE;
diff --git a/arch/powerpc/mm/hugetlbpage.c b/arch/powerpc/mm/hugetlbpage.c
index d3c1b749dcfc..290850810f27 100644
--- a/arch/powerpc/mm/hugetlbpage.c
+++ b/arch/powerpc/mm/hugetlbpage.c
@@ -40,7 +40,7 @@ pte_t *huge_pte_offset(struct mm_struct *mm, unsigned long addr, unsigned long s
 	return __find_linux_pte(mm->pgd, addr, NULL, NULL);
 }
 
-pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pte_alloc(struct mm_struct *mm, struct mm_area *vma,
 		      unsigned long addr, unsigned long sz)
 {
 	p4d_t *p4d;
diff --git a/arch/powerpc/mm/nohash/e500_hugetlbpage.c b/arch/powerpc/mm/nohash/e500_hugetlbpage.c
index a134d28a0e4d..1117ec25cafc 100644
--- a/arch/powerpc/mm/nohash/e500_hugetlbpage.c
+++ b/arch/powerpc/mm/nohash/e500_hugetlbpage.c
@@ -116,7 +116,7 @@ static inline int book3e_tlb_exists(unsigned long ea, unsigned long pid)
 }
 
 static void
-book3e_hugetlb_preload(struct vm_area_struct *vma, unsigned long ea, pte_t pte)
+book3e_hugetlb_preload(struct mm_area *vma, unsigned long ea, pte_t pte)
 {
 	unsigned long mas1, mas2;
 	u64 mas7_3;
@@ -178,13 +178,13 @@ book3e_hugetlb_preload(struct vm_area_struct *vma, unsigned long ea, pte_t pte)
  *
  * This must always be called with the pte lock held.
  */
-void __update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t *ptep)
+void __update_mmu_cache(struct mm_area *vma, unsigned long address, pte_t *ptep)
 {
 	if (is_vm_hugetlb_page(vma))
 		book3e_hugetlb_preload(vma, address, *ptep);
 }
 
-void flush_hugetlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
+void flush_hugetlb_page(struct mm_area *vma, unsigned long vmaddr)
 {
 	struct hstate *hstate = hstate_file(vma->vm_file);
 	unsigned long tsize = huge_page_shift(hstate) - 10;
diff --git a/arch/powerpc/mm/nohash/tlb.c b/arch/powerpc/mm/nohash/tlb.c
index 0a650742f3a0..cd62f02ed016 100644
--- a/arch/powerpc/mm/nohash/tlb.c
+++ b/arch/powerpc/mm/nohash/tlb.c
@@ -149,7 +149,7 @@ void __local_flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr,
 	preempt_enable();
 }
 
-void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
+void local_flush_tlb_page(struct mm_area *vma, unsigned long vmaddr)
 {
 	__local_flush_tlb_page(vma ? vma->vm_mm : NULL, vmaddr,
 			       mmu_get_tsize(mmu_virtual_psize), 0);
@@ -275,7 +275,7 @@ void __flush_tlb_page(struct mm_struct *mm, unsigned long vmaddr,
 	preempt_enable();
 }
 
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
+void flush_tlb_page(struct mm_area *vma, unsigned long vmaddr)
 {
 #ifdef CONFIG_HUGETLB_PAGE
 	if (vma && is_vm_hugetlb_page(vma))
@@ -313,7 +313,7 @@ EXPORT_SYMBOL(flush_tlb_kernel_range);
  * some implementation can stack multiple tlbivax before a tlbsync but
  * for now, we keep it that way
  */
-void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void flush_tlb_range(struct mm_area *vma, unsigned long start,
 		     unsigned long end)
 
 {
diff --git a/arch/powerpc/mm/pgtable.c b/arch/powerpc/mm/pgtable.c
index 61df5aed7989..425f2f8a2d95 100644
--- a/arch/powerpc/mm/pgtable.c
+++ b/arch/powerpc/mm/pgtable.c
@@ -141,7 +141,7 @@ static inline pte_t set_pte_filter(pte_t pte, unsigned long addr)
 	return pte_exprotect(pte);
 }
 
-static pte_t set_access_flags_filter(pte_t pte, struct vm_area_struct *vma,
+static pte_t set_access_flags_filter(pte_t pte, struct mm_area *vma,
 				     int dirty)
 {
 	struct folio *folio;
@@ -240,7 +240,7 @@ void unmap_kernel_page(unsigned long va)
  * handled those two for us, we additionally deal with missing execute
  * permission here on some processors
  */
-int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address,
+int ptep_set_access_flags(struct mm_area *vma, unsigned long address,
 			  pte_t *ptep, pte_t entry, int dirty)
 {
 	int changed;
@@ -255,7 +255,7 @@ int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address,
 }
 
 #ifdef CONFIG_HUGETLB_PAGE
-int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+int huge_ptep_set_access_flags(struct mm_area *vma,
 			       unsigned long addr, pte_t *ptep,
 			       pte_t pte, int dirty)
 {
diff --git a/arch/powerpc/platforms/book3s/vas-api.c b/arch/powerpc/platforms/book3s/vas-api.c
index 0b6365d85d11..ee6e08d98377 100644
--- a/arch/powerpc/platforms/book3s/vas-api.c
+++ b/arch/powerpc/platforms/book3s/vas-api.c
@@ -394,7 +394,7 @@ static int do_fail_paste(void)
  */
 static vm_fault_t vas_mmap_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct file *fp = vma->vm_file;
 	struct coproc_instance *cp_inst = fp->private_data;
 	struct vas_window *txwin;
@@ -472,7 +472,7 @@ static vm_fault_t vas_mmap_fault(struct vm_fault *vmf)
  * be invalid. Set VAS window VMA to NULL in this function which
  * is called before VMA free.
  */
-static void vas_mmap_close(struct vm_area_struct *vma)
+static void vas_mmap_close(struct mm_area *vma)
 {
 	struct file *fp = vma->vm_file;
 	struct coproc_instance *cp_inst = fp->private_data;
@@ -504,7 +504,7 @@ static const struct vm_operations_struct vas_vm_ops = {
 	.fault = vas_mmap_fault,
 };
 
-static int coproc_mmap(struct file *fp, struct vm_area_struct *vma)
+static int coproc_mmap(struct file *fp, struct mm_area *vma)
 {
 	struct coproc_instance *cp_inst = fp->private_data;
 	struct vas_window *txwin;
diff --git a/arch/powerpc/platforms/cell/spufs/file.c b/arch/powerpc/platforms/cell/spufs/file.c
index d5a2c77bc908..a7ec9abc6d00 100644
--- a/arch/powerpc/platforms/cell/spufs/file.c
+++ b/arch/powerpc/platforms/cell/spufs/file.c
@@ -229,7 +229,7 @@ spufs_mem_write(struct file *file, const char __user *buffer,
 static vm_fault_t
 spufs_mem_mmap_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct spu_context *ctx	= vma->vm_file->private_data;
 	unsigned long pfn, offset;
 	vm_fault_t ret;
@@ -258,7 +258,7 @@ spufs_mem_mmap_fault(struct vm_fault *vmf)
 	return ret;
 }
 
-static int spufs_mem_mmap_access(struct vm_area_struct *vma,
+static int spufs_mem_mmap_access(struct mm_area *vma,
 				unsigned long address,
 				void *buf, int len, int write)
 {
@@ -286,7 +286,7 @@ static const struct vm_operations_struct spufs_mem_mmap_vmops = {
 	.access = spufs_mem_mmap_access,
 };
 
-static int spufs_mem_mmap(struct file *file, struct vm_area_struct *vma)
+static int spufs_mem_mmap(struct file *file, struct mm_area *vma)
 {
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
@@ -376,7 +376,7 @@ static const struct vm_operations_struct spufs_cntl_mmap_vmops = {
 /*
  * mmap support for problem state control area [0x4000 - 0x4fff].
  */
-static int spufs_cntl_mmap(struct file *file, struct vm_area_struct *vma)
+static int spufs_cntl_mmap(struct file *file, struct mm_area *vma)
 {
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
@@ -1031,7 +1031,7 @@ static const struct vm_operations_struct spufs_signal1_mmap_vmops = {
 	.fault = spufs_signal1_mmap_fault,
 };
 
-static int spufs_signal1_mmap(struct file *file, struct vm_area_struct *vma)
+static int spufs_signal1_mmap(struct file *file, struct mm_area *vma)
 {
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
@@ -1165,7 +1165,7 @@ static const struct vm_operations_struct spufs_signal2_mmap_vmops = {
 	.fault = spufs_signal2_mmap_fault,
 };
 
-static int spufs_signal2_mmap(struct file *file, struct vm_area_struct *vma)
+static int spufs_signal2_mmap(struct file *file, struct mm_area *vma)
 {
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
@@ -1286,7 +1286,7 @@ static const struct vm_operations_struct spufs_mss_mmap_vmops = {
 /*
  * mmap support for problem state MFC DMA area [0x0000 - 0x0fff].
  */
-static int spufs_mss_mmap(struct file *file, struct vm_area_struct *vma)
+static int spufs_mss_mmap(struct file *file, struct mm_area *vma)
 {
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
@@ -1347,7 +1347,7 @@ static const struct vm_operations_struct spufs_psmap_mmap_vmops = {
 /*
  * mmap support for full problem state area [0x00000 - 0x1ffff].
  */
-static int spufs_psmap_mmap(struct file *file, struct vm_area_struct *vma)
+static int spufs_psmap_mmap(struct file *file, struct mm_area *vma)
 {
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
@@ -1406,7 +1406,7 @@ static const struct vm_operations_struct spufs_mfc_mmap_vmops = {
 /*
  * mmap support for problem state MFC DMA area [0x0000 - 0x0fff].
  */
-static int spufs_mfc_mmap(struct file *file, struct vm_area_struct *vma)
+static int spufs_mfc_mmap(struct file *file, struct mm_area *vma)
 {
 	if (!(vma->vm_flags & VM_SHARED))
 		return -EINVAL;
diff --git a/arch/powerpc/platforms/powernv/memtrace.c b/arch/powerpc/platforms/powernv/memtrace.c
index 4ac9808e55a4..1fd35cc9716e 100644
--- a/arch/powerpc/platforms/powernv/memtrace.c
+++ b/arch/powerpc/platforms/powernv/memtrace.c
@@ -45,7 +45,7 @@ static ssize_t memtrace_read(struct file *filp, char __user *ubuf,
 	return simple_read_from_buffer(ubuf, count, ppos, ent->mem, ent->size);
 }
 
-static int memtrace_mmap(struct file *filp, struct vm_area_struct *vma)
+static int memtrace_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct memtrace_entry *ent = filp->private_data;
 
diff --git a/arch/powerpc/platforms/powernv/opal-prd.c b/arch/powerpc/platforms/powernv/opal-prd.c
index dc246ed4b7b4..5a922ddd9b62 100644
--- a/arch/powerpc/platforms/powernv/opal-prd.c
+++ b/arch/powerpc/platforms/powernv/opal-prd.c
@@ -110,7 +110,7 @@ static int opal_prd_open(struct inode *inode, struct file *file)
  * @vma: VMA to map the registers into
  */
 
-static int opal_prd_mmap(struct file *file, struct vm_area_struct *vma)
+static int opal_prd_mmap(struct file *file, struct mm_area *vma)
 {
 	size_t addr, size;
 	pgprot_t page_prot;
diff --git a/arch/powerpc/platforms/pseries/vas.c b/arch/powerpc/platforms/pseries/vas.c
index c25eb1a38185..a47633bd7586 100644
--- a/arch/powerpc/platforms/pseries/vas.c
+++ b/arch/powerpc/platforms/pseries/vas.c
@@ -763,7 +763,7 @@ static int reconfig_close_windows(struct vas_caps *vcap, int excess_creds,
 {
 	struct pseries_vas_window *win, *tmp;
 	struct vas_user_win_ref *task_ref;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int rc = 0, flag;
 
 	if (migrate)
diff --git a/arch/riscv/include/asm/hugetlb.h b/arch/riscv/include/asm/hugetlb.h
index 446126497768..1a0ebd9019eb 100644
--- a/arch/riscv/include/asm/hugetlb.h
+++ b/arch/riscv/include/asm/hugetlb.h
@@ -32,7 +32,7 @@ pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
 			      unsigned long sz);
 
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
-pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+pte_t huge_ptep_clear_flush(struct mm_area *vma,
 			    unsigned long addr, pte_t *ptep);
 
 #define __HAVE_ARCH_HUGE_PTEP_SET_WRPROTECT
@@ -40,7 +40,7 @@ void huge_ptep_set_wrprotect(struct mm_struct *mm,
 			     unsigned long addr, pte_t *ptep);
 
 #define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
-int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+int huge_ptep_set_access_flags(struct mm_area *vma,
 			       unsigned long addr, pte_t *ptep,
 			       pte_t pte, int dirty);
 
diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h
index 428e48e5f57d..2fa52e4eae6a 100644
--- a/arch/riscv/include/asm/pgtable.h
+++ b/arch/riscv/include/asm/pgtable.h
@@ -506,7 +506,7 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
 
 /* Commit new configuration to MMU hardware */
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long address,
+		struct mm_area *vma, unsigned long address,
 		pte_t *ptep, unsigned int nr)
 {
 	asm goto(ALTERNATIVE("nop", "j %l[svvptc]", 0, RISCV_ISA_EXT_SVVPTC, 1)
@@ -535,7 +535,7 @@ svvptc:;
 #define update_mmu_tlb_range(vma, addr, ptep, nr) \
 	update_mmu_cache_range(NULL, vma, addr, ptep, nr)
 
-static inline void update_mmu_cache_pmd(struct vm_area_struct *vma,
+static inline void update_mmu_cache_pmd(struct mm_area *vma,
 		unsigned long address, pmd_t *pmdp)
 {
 	pte_t *ptep = (pte_t *)pmdp;
@@ -593,10 +593,10 @@ static inline void pte_clear(struct mm_struct *mm,
 }
 
 #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS	/* defined in mm/pgtable.c */
-extern int ptep_set_access_flags(struct vm_area_struct *vma, unsigned long address,
+extern int ptep_set_access_flags(struct mm_area *vma, unsigned long address,
 				 pte_t *ptep, pte_t entry, int dirty);
 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG	/* defined in mm/pgtable.c */
-extern int ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long address,
+extern int ptep_test_and_clear_young(struct mm_area *vma, unsigned long address,
 				     pte_t *ptep);
 
 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR
@@ -618,7 +618,7 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm,
 }
 
 #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
-static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
+static inline int ptep_clear_flush_young(struct mm_area *vma,
 					 unsigned long address, pte_t *ptep)
 {
 	/*
@@ -859,7 +859,7 @@ static inline int pmd_trans_huge(pmd_t pmd)
 }
 
 #define __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS
-static inline int pmdp_set_access_flags(struct vm_area_struct *vma,
+static inline int pmdp_set_access_flags(struct mm_area *vma,
 					unsigned long address, pmd_t *pmdp,
 					pmd_t entry, int dirty)
 {
@@ -867,7 +867,7 @@ static inline int pmdp_set_access_flags(struct vm_area_struct *vma,
 }
 
 #define __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG
-static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
+static inline int pmdp_test_and_clear_young(struct mm_area *vma,
 					unsigned long address, pmd_t *pmdp)
 {
 	return ptep_test_and_clear_young(vma, address, (pte_t *)pmdp);
@@ -892,7 +892,7 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm,
 }
 
 #define pmdp_establish pmdp_establish
-static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
+static inline pmd_t pmdp_establish(struct mm_area *vma,
 				unsigned long address, pmd_t *pmdp, pmd_t pmd)
 {
 	page_table_check_pmd_set(vma->vm_mm, pmdp, pmd);
@@ -900,7 +900,7 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
 }
 
 #define pmdp_collapse_flush pmdp_collapse_flush
-extern pmd_t pmdp_collapse_flush(struct vm_area_struct *vma,
+extern pmd_t pmdp_collapse_flush(struct mm_area *vma,
 				 unsigned long address, pmd_t *pmdp);
 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
 
diff --git a/arch/riscv/include/asm/tlbflush.h b/arch/riscv/include/asm/tlbflush.h
index ce0dd0fed764..18dbd9b692b9 100644
--- a/arch/riscv/include/asm/tlbflush.h
+++ b/arch/riscv/include/asm/tlbflush.h
@@ -47,14 +47,14 @@ void flush_tlb_all(void);
 void flush_tlb_mm(struct mm_struct *mm);
 void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,
 			unsigned long end, unsigned int page_size);
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr);
-void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void flush_tlb_page(struct mm_area *vma, unsigned long addr);
+void flush_tlb_range(struct mm_area *vma, unsigned long start,
 		     unsigned long end);
 void flush_tlb_kernel_range(unsigned long start, unsigned long end);
 void local_flush_tlb_kernel_range(unsigned long start, unsigned long end);
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 #define __HAVE_ARCH_FLUSH_PMD_TLB_RANGE
-void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void flush_pmd_tlb_range(struct mm_area *vma, unsigned long start,
 			unsigned long end);
 #endif
 
diff --git a/arch/riscv/kernel/vdso.c b/arch/riscv/kernel/vdso.c
index cc2895d1fbc2..0aada37e5b12 100644
--- a/arch/riscv/kernel/vdso.c
+++ b/arch/riscv/kernel/vdso.c
@@ -34,7 +34,7 @@ static struct __vdso_info compat_vdso_info;
 #endif
 
 static int vdso_mremap(const struct vm_special_mapping *sm,
-		       struct vm_area_struct *new_vma)
+		       struct mm_area *new_vma)
 {
 	current->mm->context.vdso = (void *)new_vma->vm_start;
 
diff --git a/arch/riscv/kvm/mmu.c b/arch/riscv/kvm/mmu.c
index 1087ea74567b..afd478082547 100644
--- a/arch/riscv/kvm/mmu.c
+++ b/arch/riscv/kvm/mmu.c
@@ -487,7 +487,7 @@ int kvm_arch_prepare_memory_region(struct kvm *kvm,
 	 *     +--------------------------------------------+
 	 */
 	do {
-		struct vm_area_struct *vma = find_vma(current->mm, hva);
+		struct mm_area *vma = find_vma(current->mm, hva);
 		hva_t vm_start, vm_end;
 
 		if (!vma || vma->vm_start >= reg_end)
@@ -595,7 +595,7 @@ int kvm_riscv_gstage_map(struct kvm_vcpu *vcpu,
 	bool writable;
 	short vma_pageshift;
 	gfn_t gfn = gpa >> PAGE_SHIFT;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct kvm *kvm = vcpu->kvm;
 	struct kvm_mmu_memory_cache *pcache = &vcpu->arch.mmu_page_cache;
 	bool logging = (memslot->dirty_bitmap &&
diff --git a/arch/riscv/mm/fault.c b/arch/riscv/mm/fault.c
index 0194324a0c50..75986abf7b4e 100644
--- a/arch/riscv/mm/fault.c
+++ b/arch/riscv/mm/fault.c
@@ -243,7 +243,7 @@ static inline void vmalloc_fault(struct pt_regs *regs, int code, unsigned long a
 	local_flush_tlb_page(addr);
 }
 
-static inline bool access_error(unsigned long cause, struct vm_area_struct *vma)
+static inline bool access_error(unsigned long cause, struct mm_area *vma)
 {
 	switch (cause) {
 	case EXC_INST_PAGE_FAULT:
@@ -275,7 +275,7 @@ static inline bool access_error(unsigned long cause, struct vm_area_struct *vma)
 void handle_page_fault(struct pt_regs *regs)
 {
 	struct task_struct *tsk;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm;
 	unsigned long addr, cause;
 	unsigned int flags = FAULT_FLAG_DEFAULT;
diff --git a/arch/riscv/mm/hugetlbpage.c b/arch/riscv/mm/hugetlbpage.c
index b4a78a4b35cf..f9ef0699f193 100644
--- a/arch/riscv/mm/hugetlbpage.c
+++ b/arch/riscv/mm/hugetlbpage.c
@@ -28,7 +28,7 @@ pte_t huge_ptep_get(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
 }
 
 pte_t *huge_pte_alloc(struct mm_struct *mm,
-		      struct vm_area_struct *vma,
+		      struct mm_area *vma,
 		      unsigned long addr,
 		      unsigned long sz)
 {
@@ -172,7 +172,7 @@ static pte_t get_clear_contig_flush(struct mm_struct *mm,
 				    unsigned long pte_num)
 {
 	pte_t orig_pte = get_clear_contig(mm, addr, ptep, pte_num);
-	struct vm_area_struct vma = TLB_FLUSH_VMA(mm, 0);
+	struct mm_area vma = TLB_FLUSH_VMA(mm, 0);
 	bool valid = !pte_none(orig_pte);
 
 	if (valid)
@@ -203,7 +203,7 @@ static void clear_flush(struct mm_struct *mm,
 			unsigned long pgsize,
 			unsigned long ncontig)
 {
-	struct vm_area_struct vma = TLB_FLUSH_VMA(mm, 0);
+	struct mm_area vma = TLB_FLUSH_VMA(mm, 0);
 	unsigned long i, saddr = addr;
 
 	for (i = 0; i < ncontig; i++, addr += pgsize, ptep++)
@@ -260,7 +260,7 @@ void set_huge_pte_at(struct mm_struct *mm,
 		set_pte_at(mm, addr, ptep, pte);
 }
 
-int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+int huge_ptep_set_access_flags(struct mm_area *vma,
 			       unsigned long addr,
 			       pte_t *ptep,
 			       pte_t pte,
@@ -331,7 +331,7 @@ void huge_ptep_set_wrprotect(struct mm_struct *mm,
 		set_pte_at(mm, addr, ptep, orig_pte);
 }
 
-pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+pte_t huge_ptep_clear_flush(struct mm_area *vma,
 			    unsigned long addr,
 			    pte_t *ptep)
 {
diff --git a/arch/riscv/mm/pgtable.c b/arch/riscv/mm/pgtable.c
index 4ae67324f992..f81997996346 100644
--- a/arch/riscv/mm/pgtable.c
+++ b/arch/riscv/mm/pgtable.c
@@ -5,7 +5,7 @@
 #include <linux/kernel.h>
 #include <linux/pgtable.h>
 
-int ptep_set_access_flags(struct vm_area_struct *vma,
+int ptep_set_access_flags(struct mm_area *vma,
 			  unsigned long address, pte_t *ptep,
 			  pte_t entry, int dirty)
 {
@@ -31,7 +31,7 @@ int ptep_set_access_flags(struct vm_area_struct *vma,
 	return false;
 }
 
-int ptep_test_and_clear_young(struct vm_area_struct *vma,
+int ptep_test_and_clear_young(struct mm_area *vma,
 			      unsigned long address,
 			      pte_t *ptep)
 {
@@ -136,7 +136,7 @@ int pmd_free_pte_page(pmd_t *pmd, unsigned long addr)
 
 #endif /* CONFIG_HAVE_ARCH_HUGE_VMAP */
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-pmd_t pmdp_collapse_flush(struct vm_area_struct *vma,
+pmd_t pmdp_collapse_flush(struct mm_area *vma,
 					unsigned long address, pmd_t *pmdp)
 {
 	pmd_t pmd = pmdp_huge_get_and_clear(vma->vm_mm, address, pmdp);
diff --git a/arch/riscv/mm/tlbflush.c b/arch/riscv/mm/tlbflush.c
index c25a40aa2fe0..1ae019b7e60b 100644
--- a/arch/riscv/mm/tlbflush.c
+++ b/arch/riscv/mm/tlbflush.c
@@ -130,13 +130,13 @@ void flush_tlb_mm_range(struct mm_struct *mm,
 	__flush_tlb_range(mm, mm_cpumask(mm), start, end - start, page_size);
 }
 
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
+void flush_tlb_page(struct mm_area *vma, unsigned long addr)
 {
 	__flush_tlb_range(vma->vm_mm, mm_cpumask(vma->vm_mm),
 			  addr, PAGE_SIZE, PAGE_SIZE);
 }
 
-void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void flush_tlb_range(struct mm_area *vma, unsigned long start,
 		     unsigned long end)
 {
 	unsigned long stride_size;
@@ -176,7 +176,7 @@ void flush_tlb_kernel_range(unsigned long start, unsigned long end)
 }
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-void flush_pmd_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void flush_pmd_tlb_range(struct mm_area *vma, unsigned long start,
 			unsigned long end)
 {
 	__flush_tlb_range(vma->vm_mm, mm_cpumask(vma->vm_mm),
diff --git a/arch/s390/include/asm/hugetlb.h b/arch/s390/include/asm/hugetlb.h
index 931fcc413598..ad92be48a9e4 100644
--- a/arch/s390/include/asm/hugetlb.h
+++ b/arch/s390/include/asm/hugetlb.h
@@ -54,14 +54,14 @@ static inline void huge_pte_clear(struct mm_struct *mm, unsigned long addr,
 }
 
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
-static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+static inline pte_t huge_ptep_clear_flush(struct mm_area *vma,
 					  unsigned long address, pte_t *ptep)
 {
 	return __huge_ptep_get_and_clear(vma->vm_mm, address, ptep);
 }
 
 #define  __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
-static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+static inline int huge_ptep_set_access_flags(struct mm_area *vma,
 					     unsigned long addr, pte_t *ptep,
 					     pte_t pte, int dirty)
 {
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index f8a6b54986ec..6bc573582112 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -1215,7 +1215,7 @@ pte_t ptep_xchg_direct(struct mm_struct *, unsigned long, pte_t *, pte_t);
 pte_t ptep_xchg_lazy(struct mm_struct *, unsigned long, pte_t *, pte_t);
 
 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
-static inline int ptep_test_and_clear_young(struct vm_area_struct *vma,
+static inline int ptep_test_and_clear_young(struct mm_area *vma,
 					    unsigned long addr, pte_t *ptep)
 {
 	pte_t pte = *ptep;
@@ -1225,7 +1225,7 @@ static inline int ptep_test_and_clear_young(struct vm_area_struct *vma,
 }
 
 #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
-static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
+static inline int ptep_clear_flush_young(struct mm_area *vma,
 					 unsigned long address, pte_t *ptep)
 {
 	return ptep_test_and_clear_young(vma, address, ptep);
@@ -1245,12 +1245,12 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm,
 }
 
 #define __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION
-pte_t ptep_modify_prot_start(struct vm_area_struct *, unsigned long, pte_t *);
-void ptep_modify_prot_commit(struct vm_area_struct *, unsigned long,
+pte_t ptep_modify_prot_start(struct mm_area *, unsigned long, pte_t *);
+void ptep_modify_prot_commit(struct mm_area *, unsigned long,
 			     pte_t *, pte_t, pte_t);
 
 #define __HAVE_ARCH_PTEP_CLEAR_FLUSH
-static inline pte_t ptep_clear_flush(struct vm_area_struct *vma,
+static inline pte_t ptep_clear_flush(struct mm_area *vma,
 				     unsigned long addr, pte_t *ptep)
 {
 	pte_t res;
@@ -1327,7 +1327,7 @@ static inline int pte_allow_rdp(pte_t old, pte_t new)
 	return (pte_val(old) & _PAGE_RDP_MASK) == (pte_val(new) & _PAGE_RDP_MASK);
 }
 
-static inline void flush_tlb_fix_spurious_fault(struct vm_area_struct *vma,
+static inline void flush_tlb_fix_spurious_fault(struct mm_area *vma,
 						unsigned long address,
 						pte_t *ptep)
 {
@@ -1350,7 +1350,7 @@ void ptep_reset_dat_prot(struct mm_struct *mm, unsigned long addr, pte_t *ptep,
 			 pte_t new);
 
 #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
-static inline int ptep_set_access_flags(struct vm_area_struct *vma,
+static inline int ptep_set_access_flags(struct mm_area *vma,
 					unsigned long addr, pte_t *ptep,
 					pte_t entry, int dirty)
 {
@@ -1776,7 +1776,7 @@ void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
 pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
 
 #define  __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS
-static inline int pmdp_set_access_flags(struct vm_area_struct *vma,
+static inline int pmdp_set_access_flags(struct mm_area *vma,
 					unsigned long addr, pmd_t *pmdp,
 					pmd_t entry, int dirty)
 {
@@ -1792,7 +1792,7 @@ static inline int pmdp_set_access_flags(struct vm_area_struct *vma,
 }
 
 #define __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG
-static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
+static inline int pmdp_test_and_clear_young(struct mm_area *vma,
 					    unsigned long addr, pmd_t *pmdp)
 {
 	pmd_t pmd = *pmdp;
@@ -1802,7 +1802,7 @@ static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
 }
 
 #define __HAVE_ARCH_PMDP_CLEAR_YOUNG_FLUSH
-static inline int pmdp_clear_flush_young(struct vm_area_struct *vma,
+static inline int pmdp_clear_flush_young(struct mm_area *vma,
 					 unsigned long addr, pmd_t *pmdp)
 {
 	VM_BUG_ON(addr & ~HPAGE_MASK);
@@ -1830,7 +1830,7 @@ static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm,
 }
 
 #define __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR_FULL
-static inline pmd_t pmdp_huge_get_and_clear_full(struct vm_area_struct *vma,
+static inline pmd_t pmdp_huge_get_and_clear_full(struct mm_area *vma,
 						 unsigned long addr,
 						 pmd_t *pmdp, int full)
 {
@@ -1843,14 +1843,14 @@ static inline pmd_t pmdp_huge_get_and_clear_full(struct vm_area_struct *vma,
 }
 
 #define __HAVE_ARCH_PMDP_HUGE_CLEAR_FLUSH
-static inline pmd_t pmdp_huge_clear_flush(struct vm_area_struct *vma,
+static inline pmd_t pmdp_huge_clear_flush(struct mm_area *vma,
 					  unsigned long addr, pmd_t *pmdp)
 {
 	return pmdp_huge_get_and_clear(vma->vm_mm, addr, pmdp);
 }
 
 #define __HAVE_ARCH_PMDP_INVALIDATE
-static inline pmd_t pmdp_invalidate(struct vm_area_struct *vma,
+static inline pmd_t pmdp_invalidate(struct mm_area *vma,
 				   unsigned long addr, pmd_t *pmdp)
 {
 	pmd_t pmd;
@@ -1870,7 +1870,7 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm,
 		pmd = pmdp_xchg_lazy(mm, addr, pmdp, pmd_wrprotect(pmd));
 }
 
-static inline pmd_t pmdp_collapse_flush(struct vm_area_struct *vma,
+static inline pmd_t pmdp_collapse_flush(struct mm_area *vma,
 					unsigned long address,
 					pmd_t *pmdp)
 {
diff --git a/arch/s390/include/asm/tlbflush.h b/arch/s390/include/asm/tlbflush.h
index 75491baa2197..8eab59435a2c 100644
--- a/arch/s390/include/asm/tlbflush.h
+++ b/arch/s390/include/asm/tlbflush.h
@@ -111,7 +111,7 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
 	__tlb_flush_mm_lazy(mm);
 }
 
-static inline void flush_tlb_range(struct vm_area_struct *vma,
+static inline void flush_tlb_range(struct mm_area *vma,
 				   unsigned long start, unsigned long end)
 {
 	__tlb_flush_mm_lazy(vma->vm_mm);
diff --git a/arch/s390/kernel/crash_dump.c b/arch/s390/kernel/crash_dump.c
index 4a981266b483..cff27a7da9bc 100644
--- a/arch/s390/kernel/crash_dump.c
+++ b/arch/s390/kernel/crash_dump.c
@@ -176,7 +176,7 @@ ssize_t copy_oldmem_page(struct iov_iter *iter, unsigned long pfn, size_t csize,
  * For the kdump reserved memory this functions performs a swap operation:
  * [0 - OLDMEM_SIZE] is mapped to [OLDMEM_BASE - OLDMEM_BASE + OLDMEM_SIZE]
  */
-static int remap_oldmem_pfn_range_kdump(struct vm_area_struct *vma,
+static int remap_oldmem_pfn_range_kdump(struct mm_area *vma,
 					unsigned long from, unsigned long pfn,
 					unsigned long size, pgprot_t prot)
 {
@@ -203,7 +203,7 @@ static int remap_oldmem_pfn_range_kdump(struct vm_area_struct *vma,
  * We only map available memory above HSA size. Memory below HSA size
  * is read on demand using the copy_oldmem_page() function.
  */
-static int remap_oldmem_pfn_range_zfcpdump(struct vm_area_struct *vma,
+static int remap_oldmem_pfn_range_zfcpdump(struct mm_area *vma,
 					   unsigned long from,
 					   unsigned long pfn,
 					   unsigned long size, pgprot_t prot)
@@ -225,7 +225,7 @@ static int remap_oldmem_pfn_range_zfcpdump(struct vm_area_struct *vma,
 /*
  * Remap "oldmem" for kdump or zfcp/nvme dump
  */
-int remap_oldmem_pfn_range(struct vm_area_struct *vma, unsigned long from,
+int remap_oldmem_pfn_range(struct mm_area *vma, unsigned long from,
 			   unsigned long pfn, unsigned long size, pgprot_t prot)
 {
 	if (oldmem_data.start)
diff --git a/arch/s390/kernel/uv.c b/arch/s390/kernel/uv.c
index 9a5d5be8acf4..a41b180a29bc 100644
--- a/arch/s390/kernel/uv.c
+++ b/arch/s390/kernel/uv.c
@@ -356,7 +356,7 @@ static int s390_wiggle_split_folio(struct mm_struct *mm, struct folio *folio, bo
 
 int make_hva_secure(struct mm_struct *mm, unsigned long hva, struct uv_cb_header *uvcb)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct folio_walk fw;
 	struct folio *folio;
 	int rc;
diff --git a/arch/s390/kernel/vdso.c b/arch/s390/kernel/vdso.c
index 430feb1a5013..f660415e46c0 100644
--- a/arch/s390/kernel/vdso.c
+++ b/arch/s390/kernel/vdso.c
@@ -27,7 +27,7 @@ extern char vdso64_start[], vdso64_end[];
 extern char vdso32_start[], vdso32_end[];
 
 static int vdso_mremap(const struct vm_special_mapping *sm,
-		       struct vm_area_struct *vma)
+		       struct mm_area *vma)
 {
 	current->mm->context.vdso_base = vma->vm_start;
 	return 0;
@@ -55,7 +55,7 @@ static int map_vdso(unsigned long addr, unsigned long vdso_mapping_len)
 	unsigned long vvar_start, vdso_text_start, vdso_text_len;
 	struct vm_special_mapping *vdso_mapping;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int rc;
 
 	BUILD_BUG_ON(VDSO_NR_PAGES != __VDSO_PAGES);
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c
index da84ff6770de..119a4c17873b 100644
--- a/arch/s390/mm/fault.c
+++ b/arch/s390/mm/fault.c
@@ -258,7 +258,7 @@ static void do_sigbus(struct pt_regs *regs)
  */
 static void do_exception(struct pt_regs *regs, int access)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long address;
 	struct mm_struct *mm;
 	unsigned int flags;
@@ -405,7 +405,7 @@ void do_secure_storage_access(struct pt_regs *regs)
 {
 	union teid teid = { .val = regs->int_parm_long };
 	unsigned long addr = get_fault_address(regs);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct folio_walk fw;
 	struct mm_struct *mm;
 	struct folio *folio;
diff --git a/arch/s390/mm/gmap.c b/arch/s390/mm/gmap.c
index a94bd4870c65..8c6a886f71d1 100644
--- a/arch/s390/mm/gmap.c
+++ b/arch/s390/mm/gmap.c
@@ -620,7 +620,7 @@ EXPORT_SYMBOL(__gmap_link);
  */
 void __gmap_zap(struct gmap *gmap, unsigned long gaddr)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long vmaddr;
 	spinlock_t *ptl;
 	pte_t *ptep;
@@ -648,7 +648,7 @@ EXPORT_SYMBOL_GPL(__gmap_zap);
 void gmap_discard(struct gmap *gmap, unsigned long from, unsigned long to)
 {
 	unsigned long gaddr, vmaddr, size;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	mmap_read_lock(gmap->mm);
 	for (gaddr = from; gaddr < to;
@@ -2222,7 +2222,7 @@ EXPORT_SYMBOL_GPL(gmap_sync_dirty_log_pmd);
 static int thp_split_walk_pmd_entry(pmd_t *pmd, unsigned long addr,
 				    unsigned long end, struct mm_walk *walk)
 {
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 
 	split_huge_pmd(vma, pmd, addr);
 	return 0;
@@ -2235,7 +2235,7 @@ static const struct mm_walk_ops thp_split_walk_ops = {
 
 static inline void thp_split_mm(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	for_each_vma(vmi, vma) {
@@ -2312,7 +2312,7 @@ static const struct mm_walk_ops find_zeropage_ops = {
  */
 static int __s390_unshare_zeropages(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, 0);
 	unsigned long addr;
 	vm_fault_t fault;
diff --git a/arch/s390/mm/hugetlbpage.c b/arch/s390/mm/hugetlbpage.c
index e88c02c9e642..c54f4772b8bf 100644
--- a/arch/s390/mm/hugetlbpage.c
+++ b/arch/s390/mm/hugetlbpage.c
@@ -203,7 +203,7 @@ pte_t __huge_ptep_get_and_clear(struct mm_struct *mm,
 	return pte;
 }
 
-pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pte_alloc(struct mm_struct *mm, struct mm_area *vma,
 			unsigned long addr, unsigned long sz)
 {
 	pgd_t *pgdp;
diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c
index 40a526d28184..edbd4688f56a 100644
--- a/arch/s390/mm/mmap.c
+++ b/arch/s390/mm/mmap.c
@@ -81,7 +81,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
 				     unsigned long flags, vm_flags_t vm_flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct vm_unmapped_area_info info = {};
 
 	if (len > TASK_SIZE - mmap_min_addr)
@@ -116,7 +116,7 @@ unsigned long arch_get_unmapped_area_topdown(struct file *filp, unsigned long ad
 					     unsigned long len, unsigned long pgoff,
 					     unsigned long flags, vm_flags_t vm_flags)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm = current->mm;
 	struct vm_unmapped_area_info info = {};
 
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
index 9901934284ec..28f0316e4db1 100644
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@ -327,7 +327,7 @@ pte_t ptep_xchg_lazy(struct mm_struct *mm, unsigned long addr,
 }
 EXPORT_SYMBOL(ptep_xchg_lazy);
 
-pte_t ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr,
+pte_t ptep_modify_prot_start(struct mm_area *vma, unsigned long addr,
 			     pte_t *ptep)
 {
 	pgste_t pgste;
@@ -346,7 +346,7 @@ pte_t ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr,
 	return old;
 }
 
-void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr,
+void ptep_modify_prot_commit(struct mm_area *vma, unsigned long addr,
 			     pte_t *ptep, pte_t old_pte, pte_t pte)
 {
 	pgste_t pgste;
@@ -437,7 +437,7 @@ static inline pmd_t pmdp_flush_lazy(struct mm_struct *mm,
 #ifdef CONFIG_PGSTE
 static int pmd_lookup(struct mm_struct *mm, unsigned long addr, pmd_t **pmdp)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	pgd_t *pgd;
 	p4d_t *p4d;
 	pud_t *pud;
@@ -1032,7 +1032,7 @@ EXPORT_SYMBOL(get_guest_storage_key);
 int pgste_perform_essa(struct mm_struct *mm, unsigned long hva, int orc,
 			unsigned long *oldpte, unsigned long *oldpgste)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long pgstev;
 	spinlock_t *ptl;
 	pgste_t pgste;
@@ -1138,7 +1138,7 @@ EXPORT_SYMBOL(pgste_perform_essa);
 int set_pgste_bits(struct mm_struct *mm, unsigned long hva,
 			unsigned long bits, unsigned long value)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	spinlock_t *ptl;
 	pgste_t new;
 	pte_t *ptep;
@@ -1170,7 +1170,7 @@ EXPORT_SYMBOL(set_pgste_bits);
  */
 int get_pgste(struct mm_struct *mm, unsigned long hva, unsigned long *pgstep)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	spinlock_t *ptl;
 	pte_t *ptep;
 
diff --git a/arch/s390/pci/pci_mmio.c b/arch/s390/pci/pci_mmio.c
index 5fcc1a3b04bd..77d158f08245 100644
--- a/arch/s390/pci/pci_mmio.c
+++ b/arch/s390/pci/pci_mmio.c
@@ -126,7 +126,7 @@ SYSCALL_DEFINE3(s390_pci_mmio_write, unsigned long, mmio_addr,
 	u8 local_buf[64];
 	void __iomem *io_addr;
 	void *buf;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	long ret;
 
 	if (!zpci_is_enabled())
@@ -279,7 +279,7 @@ SYSCALL_DEFINE3(s390_pci_mmio_read, unsigned long, mmio_addr,
 	u8 local_buf[64];
 	void __iomem *io_addr;
 	void *buf;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	long ret;
 
 	if (!zpci_is_enabled())
diff --git a/arch/sh/include/asm/cacheflush.h b/arch/sh/include/asm/cacheflush.h
index e6642ff14889..87666383d58a 100644
--- a/arch/sh/include/asm/cacheflush.h
+++ b/arch/sh/include/asm/cacheflush.h
@@ -37,9 +37,9 @@ extern void (*__flush_invalidate_region)(void *start, int size);
 extern void flush_cache_all(void);
 extern void flush_cache_mm(struct mm_struct *mm);
 extern void flush_cache_dup_mm(struct mm_struct *mm);
-extern void flush_cache_page(struct vm_area_struct *vma,
+extern void flush_cache_page(struct mm_area *vma,
 				unsigned long addr, unsigned long pfn);
-extern void flush_cache_range(struct vm_area_struct *vma,
+extern void flush_cache_range(struct mm_area *vma,
 				 unsigned long start, unsigned long end);
 #define ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE 1
 void flush_dcache_folio(struct folio *folio);
@@ -51,20 +51,20 @@ static inline void flush_dcache_page(struct page *page)
 
 extern void flush_icache_range(unsigned long start, unsigned long end);
 #define flush_icache_user_range flush_icache_range
-void flush_icache_pages(struct vm_area_struct *vma, struct page *page,
+void flush_icache_pages(struct mm_area *vma, struct page *page,
 		unsigned int nr);
 #define flush_icache_pages flush_icache_pages
 extern void flush_cache_sigtramp(unsigned long address);
 
 struct flusher_data {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr1, addr2;
 };
 
 #define ARCH_HAS_FLUSH_ANON_PAGE
 extern void __flush_anon_page(struct page *page, unsigned long);
 
-static inline void flush_anon_page(struct vm_area_struct *vma,
+static inline void flush_anon_page(struct mm_area *vma,
 				   struct page *page, unsigned long vmaddr)
 {
 	if (boot_cpu_data.dcache.n_aliases && PageAnon(page))
@@ -81,11 +81,11 @@ static inline void invalidate_kernel_vmap_range(void *addr, int size)
 	__flush_invalidate_region(addr, size);
 }
 
-extern void copy_to_user_page(struct vm_area_struct *vma,
+extern void copy_to_user_page(struct mm_area *vma,
 	struct page *page, unsigned long vaddr, void *dst, const void *src,
 	unsigned long len);
 
-extern void copy_from_user_page(struct vm_area_struct *vma,
+extern void copy_from_user_page(struct mm_area *vma,
 	struct page *page, unsigned long vaddr, void *dst, const void *src,
 	unsigned long len);
 
diff --git a/arch/sh/include/asm/hugetlb.h b/arch/sh/include/asm/hugetlb.h
index 4a92e6e4d627..f2f364330ed9 100644
--- a/arch/sh/include/asm/hugetlb.h
+++ b/arch/sh/include/asm/hugetlb.h
@@ -6,7 +6,7 @@
 #include <asm/page.h>
 
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
-static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+static inline pte_t huge_ptep_clear_flush(struct mm_area *vma,
 					  unsigned long addr, pte_t *ptep)
 {
 	return *ptep;
diff --git a/arch/sh/include/asm/page.h b/arch/sh/include/asm/page.h
index 3990cbd9aa04..feba697dd921 100644
--- a/arch/sh/include/asm/page.h
+++ b/arch/sh/include/asm/page.h
@@ -48,10 +48,10 @@ extern void copy_page(void *to, void *from);
 #define copy_user_page(to, from, vaddr, pg)  __copy_user(to, from, PAGE_SIZE)
 
 struct page;
-struct vm_area_struct;
+struct mm_area;
 
 extern void copy_user_highpage(struct page *to, struct page *from,
-			       unsigned long vaddr, struct vm_area_struct *vma);
+			       unsigned long vaddr, struct mm_area *vma);
 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
 extern void clear_user_highpage(struct page *page, unsigned long vaddr);
 #define clear_user_highpage	clear_user_highpage
diff --git a/arch/sh/include/asm/pgtable.h b/arch/sh/include/asm/pgtable.h
index 729f5c6225fb..1cc0974cae6c 100644
--- a/arch/sh/include/asm/pgtable.h
+++ b/arch/sh/include/asm/pgtable.h
@@ -94,16 +94,16 @@ typedef pte_t *pte_addr_t;
 
 #define pte_pfn(x)		((unsigned long)(((x).pte_low >> PAGE_SHIFT)))
 
-struct vm_area_struct;
+struct mm_area;
 struct mm_struct;
 
-extern void __update_cache(struct vm_area_struct *vma,
+extern void __update_cache(struct mm_area *vma,
 			   unsigned long address, pte_t pte);
-extern void __update_tlb(struct vm_area_struct *vma,
+extern void __update_tlb(struct mm_area *vma,
 			 unsigned long address, pte_t pte);
 
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long address,
+		struct mm_area *vma, unsigned long address,
 		pte_t *ptep, unsigned int nr)
 {
 	pte_t pte = *ptep;
diff --git a/arch/sh/include/asm/tlb.h b/arch/sh/include/asm/tlb.h
index ddf324bfb9a0..6d1e9c61e24c 100644
--- a/arch/sh/include/asm/tlb.h
+++ b/arch/sh/include/asm/tlb.h
@@ -10,10 +10,10 @@
 #include <linux/swap.h>
 
 #if defined(CONFIG_CPU_SH4)
-extern void tlb_wire_entry(struct vm_area_struct *, unsigned long, pte_t);
+extern void tlb_wire_entry(struct mm_area *, unsigned long, pte_t);
 extern void tlb_unwire_entry(void);
 #else
-static inline void tlb_wire_entry(struct vm_area_struct *vma ,
+static inline void tlb_wire_entry(struct mm_area *vma ,
 				  unsigned long addr, pte_t pte)
 {
 	BUG();
diff --git a/arch/sh/include/asm/tlbflush.h b/arch/sh/include/asm/tlbflush.h
index 8f180cd3bcd6..ca2de60ad063 100644
--- a/arch/sh/include/asm/tlbflush.h
+++ b/arch/sh/include/asm/tlbflush.h
@@ -13,10 +13,10 @@
  */
 extern void local_flush_tlb_all(void);
 extern void local_flush_tlb_mm(struct mm_struct *mm);
-extern void local_flush_tlb_range(struct vm_area_struct *vma,
+extern void local_flush_tlb_range(struct mm_area *vma,
 				  unsigned long start,
 				  unsigned long end);
-extern void local_flush_tlb_page(struct vm_area_struct *vma,
+extern void local_flush_tlb_page(struct mm_area *vma,
 				 unsigned long page);
 extern void local_flush_tlb_kernel_range(unsigned long start,
 					 unsigned long end);
@@ -28,9 +28,9 @@ extern void __flush_tlb_global(void);
 
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm(struct mm_struct *mm);
-extern void flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+extern void flush_tlb_range(struct mm_area *vma, unsigned long start,
 			    unsigned long end);
-extern void flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
+extern void flush_tlb_page(struct mm_area *vma, unsigned long page);
 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
 extern void flush_tlb_one(unsigned long asid, unsigned long page);
 
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c
index 108d808767fa..61d56994d473 100644
--- a/arch/sh/kernel/smp.c
+++ b/arch/sh/kernel/smp.c
@@ -377,7 +377,7 @@ void flush_tlb_mm(struct mm_struct *mm)
 }
 
 struct flush_tlb_data {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr1;
 	unsigned long addr2;
 };
@@ -389,7 +389,7 @@ static void flush_tlb_range_ipi(void *info)
 	local_flush_tlb_range(fd->vma, fd->addr1, fd->addr2);
 }
 
-void flush_tlb_range(struct vm_area_struct *vma,
+void flush_tlb_range(struct mm_area *vma,
 		     unsigned long start, unsigned long end)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -435,7 +435,7 @@ static void flush_tlb_page_ipi(void *info)
 	local_flush_tlb_page(fd->vma, fd->addr1);
 }
 
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+void flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	preempt_disable();
 	if ((atomic_read(&vma->vm_mm->mm_users) != 1) ||
diff --git a/arch/sh/kernel/sys_sh.c b/arch/sh/kernel/sys_sh.c
index a5a7b33ed81a..2d263feef643 100644
--- a/arch/sh/kernel/sys_sh.c
+++ b/arch/sh/kernel/sys_sh.c
@@ -57,7 +57,7 @@ asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,
 /* sys_cacheflush -- flush (part of) the processor cache.  */
 asmlinkage int sys_cacheflush(unsigned long addr, unsigned long len, int op)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	if ((op <= 0) || (op > (CACHEFLUSH_D_PURGE|CACHEFLUSH_I)))
 		return -EINVAL;
diff --git a/arch/sh/kernel/vsyscall/vsyscall.c b/arch/sh/kernel/vsyscall/vsyscall.c
index 1563dcc55fd3..9916506a052a 100644
--- a/arch/sh/kernel/vsyscall/vsyscall.c
+++ b/arch/sh/kernel/vsyscall/vsyscall.c
@@ -83,7 +83,7 @@ fs_initcall(vm_sysctl_init);
 int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr;
 	int ret;
 
@@ -113,7 +113,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 	return ret;
 }
 
-const char *arch_vma_name(struct vm_area_struct *vma)
+const char *arch_vma_name(struct mm_area *vma)
 {
 	if (vma->vm_mm && vma->vm_start == (long)vma->vm_mm->context.vdso)
 		return "[vdso]";
diff --git a/arch/sh/mm/cache-sh4.c b/arch/sh/mm/cache-sh4.c
index 46393b00137e..f4d37a852d27 100644
--- a/arch/sh/mm/cache-sh4.c
+++ b/arch/sh/mm/cache-sh4.c
@@ -214,7 +214,7 @@ static void sh4_flush_cache_mm(void *arg)
 static void sh4_flush_cache_page(void *args)
 {
 	struct flusher_data *data = args;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct page *page;
 	unsigned long address, pfn, phys;
 	int map_coherent = 0;
@@ -283,7 +283,7 @@ static void sh4_flush_cache_page(void *args)
 static void sh4_flush_cache_range(void *args)
 {
 	struct flusher_data *data = args;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long start, end;
 
 	vma = data->vma;
diff --git a/arch/sh/mm/cache.c b/arch/sh/mm/cache.c
index 6ebdeaff3021..2f85019529ff 100644
--- a/arch/sh/mm/cache.c
+++ b/arch/sh/mm/cache.c
@@ -57,7 +57,7 @@ static inline void cacheop_on_each_cpu(void (*func) (void *info), void *info,
 	preempt_enable();
 }
 
-void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_to_user_page(struct mm_area *vma, struct page *page,
 		       unsigned long vaddr, void *dst, const void *src,
 		       unsigned long len)
 {
@@ -78,7 +78,7 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
 		flush_cache_page(vma, vaddr, page_to_pfn(page));
 }
 
-void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_from_user_page(struct mm_area *vma, struct page *page,
 			 unsigned long vaddr, void *dst, const void *src,
 			 unsigned long len)
 {
@@ -97,7 +97,7 @@ void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
 }
 
 void copy_user_highpage(struct page *to, struct page *from,
-			unsigned long vaddr, struct vm_area_struct *vma)
+			unsigned long vaddr, struct mm_area *vma)
 {
 	struct folio *src = page_folio(from);
 	void *vfrom, *vto;
@@ -138,7 +138,7 @@ void clear_user_highpage(struct page *page, unsigned long vaddr)
 }
 EXPORT_SYMBOL(clear_user_highpage);
 
-void __update_cache(struct vm_area_struct *vma,
+void __update_cache(struct mm_area *vma,
 		    unsigned long address, pte_t pte)
 {
 	unsigned long pfn = pte_pfn(pte);
@@ -197,7 +197,7 @@ void flush_cache_dup_mm(struct mm_struct *mm)
 	cacheop_on_each_cpu(local_flush_cache_dup_mm, mm, 1);
 }
 
-void flush_cache_page(struct vm_area_struct *vma, unsigned long addr,
+void flush_cache_page(struct mm_area *vma, unsigned long addr,
 		      unsigned long pfn)
 {
 	struct flusher_data data;
@@ -209,7 +209,7 @@ void flush_cache_page(struct vm_area_struct *vma, unsigned long addr,
 	cacheop_on_each_cpu(local_flush_cache_page, (void *)&data, 1);
 }
 
-void flush_cache_range(struct vm_area_struct *vma, unsigned long start,
+void flush_cache_range(struct mm_area *vma, unsigned long start,
 		       unsigned long end)
 {
 	struct flusher_data data;
@@ -240,7 +240,7 @@ void flush_icache_range(unsigned long start, unsigned long end)
 }
 EXPORT_SYMBOL(flush_icache_range);
 
-void flush_icache_pages(struct vm_area_struct *vma, struct page *page,
+void flush_icache_pages(struct mm_area *vma, struct page *page,
 		unsigned int nr)
 {
 	/* Nothing uses the VMA, so just pass the folio along */
diff --git a/arch/sh/mm/fault.c b/arch/sh/mm/fault.c
index 06e6b4952924..962137e245fc 100644
--- a/arch/sh/mm/fault.c
+++ b/arch/sh/mm/fault.c
@@ -355,7 +355,7 @@ mm_fault_error(struct pt_regs *regs, unsigned long error_code,
 	return 1;
 }
 
-static inline int access_error(int error_code, struct vm_area_struct *vma)
+static inline int access_error(int error_code, struct mm_area *vma)
 {
 	if (error_code & FAULT_CODE_WRITE) {
 		/* write, present and write, not present: */
@@ -393,7 +393,7 @@ asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
 	unsigned long vec;
 	struct task_struct *tsk;
 	struct mm_struct *mm;
-	struct vm_area_struct * vma;
+	struct mm_area * vma;
 	vm_fault_t fault;
 	unsigned int flags = FAULT_FLAG_DEFAULT;
 
diff --git a/arch/sh/mm/hugetlbpage.c b/arch/sh/mm/hugetlbpage.c
index ff209b55285a..ea147dc50cfa 100644
--- a/arch/sh/mm/hugetlbpage.c
+++ b/arch/sh/mm/hugetlbpage.c
@@ -21,7 +21,7 @@
 #include <asm/tlbflush.h>
 #include <asm/cacheflush.h>
 
-pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pte_alloc(struct mm_struct *mm, struct mm_area *vma,
 			unsigned long addr, unsigned long sz)
 {
 	pgd_t *pgd;
diff --git a/arch/sh/mm/mmap.c b/arch/sh/mm/mmap.c
index c442734d9b0c..a015e881f62f 100644
--- a/arch/sh/mm/mmap.c
+++ b/arch/sh/mm/mmap.c
@@ -56,7 +56,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
 	vm_flags_t vm_flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int do_colour_align;
 	struct vm_unmapped_area_info info = {};
 
@@ -102,7 +102,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
 			  const unsigned long len, const unsigned long pgoff,
 			  const unsigned long flags, vm_flags_t vm_flags)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm = current->mm;
 	unsigned long addr = addr0;
 	int do_colour_align;
diff --git a/arch/sh/mm/nommu.c b/arch/sh/mm/nommu.c
index fa3dc9428a73..739f316eb55a 100644
--- a/arch/sh/mm/nommu.c
+++ b/arch/sh/mm/nommu.c
@@ -46,13 +46,13 @@ void local_flush_tlb_mm(struct mm_struct *mm)
 	BUG();
 }
 
-void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void local_flush_tlb_range(struct mm_area *vma, unsigned long start,
 			    unsigned long end)
 {
 	BUG();
 }
 
-void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+void local_flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	BUG();
 }
@@ -71,7 +71,7 @@ void __flush_tlb_global(void)
 {
 }
 
-void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t pte)
+void __update_tlb(struct mm_area *vma, unsigned long address, pte_t pte)
 {
 }
 
diff --git a/arch/sh/mm/tlb-pteaex.c b/arch/sh/mm/tlb-pteaex.c
index 4db21adfe5de..c88f5cdca94e 100644
--- a/arch/sh/mm/tlb-pteaex.c
+++ b/arch/sh/mm/tlb-pteaex.c
@@ -15,7 +15,7 @@
 #include <asm/mmu_context.h>
 #include <asm/cacheflush.h>
 
-void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t pte)
+void __update_tlb(struct mm_area *vma, unsigned long address, pte_t pte)
 {
 	unsigned long flags, pteval, vpn;
 
diff --git a/arch/sh/mm/tlb-sh3.c b/arch/sh/mm/tlb-sh3.c
index fb400afc2a49..77369712a89c 100644
--- a/arch/sh/mm/tlb-sh3.c
+++ b/arch/sh/mm/tlb-sh3.c
@@ -24,7 +24,7 @@
 #include <asm/mmu_context.h>
 #include <asm/cacheflush.h>
 
-void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t pte)
+void __update_tlb(struct mm_area *vma, unsigned long address, pte_t pte)
 {
 	unsigned long flags, pteval, vpn;
 
diff --git a/arch/sh/mm/tlb-sh4.c b/arch/sh/mm/tlb-sh4.c
index aa0a9f4680a1..edd340097b4a 100644
--- a/arch/sh/mm/tlb-sh4.c
+++ b/arch/sh/mm/tlb-sh4.c
@@ -13,7 +13,7 @@
 #include <asm/mmu_context.h>
 #include <asm/cacheflush.h>
 
-void __update_tlb(struct vm_area_struct *vma, unsigned long address, pte_t pte)
+void __update_tlb(struct mm_area *vma, unsigned long address, pte_t pte)
 {
 	unsigned long flags, pteval, vpn;
 
diff --git a/arch/sh/mm/tlb-urb.c b/arch/sh/mm/tlb-urb.c
index c92ce20db39b..78a98552ccac 100644
--- a/arch/sh/mm/tlb-urb.c
+++ b/arch/sh/mm/tlb-urb.c
@@ -17,7 +17,7 @@
 /*
  * Load the entry for 'addr' into the TLB and wire the entry.
  */
-void tlb_wire_entry(struct vm_area_struct *vma, unsigned long addr, pte_t pte)
+void tlb_wire_entry(struct mm_area *vma, unsigned long addr, pte_t pte)
 {
 	unsigned long status, flags;
 	int urb;
diff --git a/arch/sh/mm/tlbflush_32.c b/arch/sh/mm/tlbflush_32.c
index a6a20d6de4c0..6307b906924a 100644
--- a/arch/sh/mm/tlbflush_32.c
+++ b/arch/sh/mm/tlbflush_32.c
@@ -12,7 +12,7 @@
 #include <asm/mmu_context.h>
 #include <asm/tlbflush.h>
 
-void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+void local_flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	unsigned int cpu = smp_processor_id();
 
@@ -36,7 +36,7 @@ void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
 	}
 }
 
-void local_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+void local_flush_tlb_range(struct mm_area *vma, unsigned long start,
 			   unsigned long end)
 {
 	struct mm_struct *mm = vma->vm_mm;
diff --git a/arch/sparc/include/asm/cacheflush_64.h b/arch/sparc/include/asm/cacheflush_64.h
index 2b1261b77ecd..1e6477ef34bb 100644
--- a/arch/sparc/include/asm/cacheflush_64.h
+++ b/arch/sparc/include/asm/cacheflush_64.h
@@ -53,7 +53,7 @@ static inline void flush_dcache_page(struct page *page)
 	flush_dcache_folio(page_folio(page));
 }
 
-void flush_ptrace_access(struct vm_area_struct *, struct page *,
+void flush_ptrace_access(struct mm_area *, struct page *,
 			 unsigned long uaddr, void *kaddr,
 			 unsigned long len, int write);
 
diff --git a/arch/sparc/include/asm/cachetlb_32.h b/arch/sparc/include/asm/cachetlb_32.h
index 534da70c6357..1ae6b8f58673 100644
--- a/arch/sparc/include/asm/cachetlb_32.h
+++ b/arch/sparc/include/asm/cachetlb_32.h
@@ -3,20 +3,20 @@
 #define _SPARC_CACHETLB_H
 
 struct mm_struct;
-struct vm_area_struct;
+struct mm_area;
 
 struct sparc32_cachetlb_ops {
 	void (*cache_all)(void);
 	void (*cache_mm)(struct mm_struct *);
-	void (*cache_range)(struct vm_area_struct *, unsigned long,
+	void (*cache_range)(struct mm_area *, unsigned long,
 			    unsigned long);
-	void (*cache_page)(struct vm_area_struct *, unsigned long);
+	void (*cache_page)(struct mm_area *, unsigned long);
 
 	void (*tlb_all)(void);
 	void (*tlb_mm)(struct mm_struct *);
-	void (*tlb_range)(struct vm_area_struct *, unsigned long,
+	void (*tlb_range)(struct mm_area *, unsigned long,
 			  unsigned long);
-	void (*tlb_page)(struct vm_area_struct *, unsigned long);
+	void (*tlb_page)(struct mm_area *, unsigned long);
 
 	void (*page_to_ram)(unsigned long);
 	void (*sig_insns)(struct mm_struct *, unsigned long);
diff --git a/arch/sparc/include/asm/hugetlb.h b/arch/sparc/include/asm/hugetlb.h
index e7a9cdd498dc..fdc29771a6a6 100644
--- a/arch/sparc/include/asm/hugetlb.h
+++ b/arch/sparc/include/asm/hugetlb.h
@@ -23,7 +23,7 @@ pte_t huge_ptep_get_and_clear(struct mm_struct *mm, unsigned long addr,
 			      pte_t *ptep, unsigned long sz);
 
 #define __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
-static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+static inline pte_t huge_ptep_clear_flush(struct mm_area *vma,
 					  unsigned long addr, pte_t *ptep)
 {
 	return *ptep;
@@ -38,7 +38,7 @@ static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
 }
 
 #define __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
-static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+static inline int huge_ptep_set_access_flags(struct mm_area *vma,
 					     unsigned long addr, pte_t *ptep,
 					     pte_t pte, int dirty)
 {
diff --git a/arch/sparc/include/asm/leon.h b/arch/sparc/include/asm/leon.h
index c1e05e4ab9e3..e0cf0f724fb4 100644
--- a/arch/sparc/include/asm/leon.h
+++ b/arch/sparc/include/asm/leon.h
@@ -195,7 +195,7 @@ static inline int sparc_leon3_cpuid(void)
 #define LEON2_CFG_SSIZE_MASK 0x00007000UL
 
 #ifndef __ASSEMBLY__
-struct vm_area_struct;
+struct mm_area;
 
 unsigned long leon_swprobe(unsigned long vaddr, unsigned long *paddr);
 void leon_flush_icache_all(void);
@@ -204,7 +204,7 @@ void leon_flush_cache_all(void);
 void leon_flush_tlb_all(void);
 extern int leon_flush_during_switch;
 int leon_flush_needed(void);
-void leon_flush_pcache_all(struct vm_area_struct *vma, unsigned long page);
+void leon_flush_pcache_all(struct mm_area *vma, unsigned long page);
 
 /* struct that hold LEON3 cache configuration registers */
 struct leon3_cacheregs {
diff --git a/arch/sparc/include/asm/page_64.h b/arch/sparc/include/asm/page_64.h
index 2a68ff5b6eab..1abc1d8743c5 100644
--- a/arch/sparc/include/asm/page_64.h
+++ b/arch/sparc/include/asm/page_64.h
@@ -46,9 +46,9 @@ void clear_user_page(void *addr, unsigned long vaddr, struct page *page);
 #define copy_page(X,Y)	memcpy((void *)(X), (void *)(Y), PAGE_SIZE)
 void copy_user_page(void *to, void *from, unsigned long vaddr, struct page *topage);
 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
-struct vm_area_struct;
+struct mm_area;
 void copy_user_highpage(struct page *to, struct page *from,
-			unsigned long vaddr, struct vm_area_struct *vma);
+			unsigned long vaddr, struct mm_area *vma);
 #define __HAVE_ARCH_COPY_HIGHPAGE
 void copy_highpage(struct page *to, struct page *from);
 
diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h
index 62bcafe38b1f..a451d5430db1 100644
--- a/arch/sparc/include/asm/pgtable_32.h
+++ b/arch/sparc/include/asm/pgtable_32.h
@@ -33,7 +33,7 @@
 #include <asm/cpu_type.h>
 
 
-struct vm_area_struct;
+struct mm_area;
 struct page;
 
 void load_mmu(void);
@@ -400,10 +400,10 @@ __get_iospace (unsigned long addr)
 #define GET_IOSPACE(pfn)		(pfn >> (BITS_PER_LONG - 4))
 #define GET_PFN(pfn)			(pfn & 0x0fffffffUL)
 
-int remap_pfn_range(struct vm_area_struct *, unsigned long, unsigned long,
+int remap_pfn_range(struct mm_area *, unsigned long, unsigned long,
 		    unsigned long, pgprot_t);
 
-static inline int io_remap_pfn_range(struct vm_area_struct *vma,
+static inline int io_remap_pfn_range(struct mm_area *vma,
 				     unsigned long from, unsigned long pfn,
 				     unsigned long size, pgprot_t prot)
 {
diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h
index dc28f2c4eee3..7d06b4894f2a 100644
--- a/arch/sparc/include/asm/pgtable_64.h
+++ b/arch/sparc/include/asm/pgtable_64.h
@@ -979,17 +979,17 @@ unsigned long find_ecache_flush_span(unsigned long size);
 struct seq_file;
 void mmu_info(struct seq_file *);
 
-struct vm_area_struct;
-void update_mmu_cache_range(struct vm_fault *, struct vm_area_struct *,
+struct mm_area;
+void update_mmu_cache_range(struct vm_fault *, struct mm_area *,
 		unsigned long addr, pte_t *ptep, unsigned int nr);
 #define update_mmu_cache(vma, addr, ptep) \
 	update_mmu_cache_range(NULL, vma, addr, ptep, 1)
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr,
+void update_mmu_cache_pmd(struct mm_area *vma, unsigned long addr,
 			  pmd_t *pmd);
 
 #define __HAVE_ARCH_PMDP_INVALIDATE
-extern pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
+extern pmd_t pmdp_invalidate(struct mm_area *vma, unsigned long address,
 			    pmd_t *pmdp);
 
 #define __HAVE_ARCH_PGTABLE_DEPOSIT
@@ -1050,18 +1050,18 @@ int page_in_phys_avail(unsigned long paddr);
 #define GET_IOSPACE(pfn)		(pfn >> (BITS_PER_LONG - 4))
 #define GET_PFN(pfn)			(pfn & 0x0fffffffffffffffUL)
 
-int remap_pfn_range(struct vm_area_struct *, unsigned long, unsigned long,
+int remap_pfn_range(struct mm_area *, unsigned long, unsigned long,
 		    unsigned long, pgprot_t);
 
-void adi_restore_tags(struct mm_struct *mm, struct vm_area_struct *vma,
+void adi_restore_tags(struct mm_struct *mm, struct mm_area *vma,
 		      unsigned long addr, pte_t pte);
 
-int adi_save_tags(struct mm_struct *mm, struct vm_area_struct *vma,
+int adi_save_tags(struct mm_struct *mm, struct mm_area *vma,
 		  unsigned long addr, pte_t oldpte);
 
 #define __HAVE_ARCH_DO_SWAP_PAGE
 static inline void arch_do_swap_page(struct mm_struct *mm,
-				     struct vm_area_struct *vma,
+				     struct mm_area *vma,
 				     unsigned long addr,
 				     pte_t pte, pte_t oldpte)
 {
@@ -1078,7 +1078,7 @@ static inline void arch_do_swap_page(struct mm_struct *mm,
 
 #define __HAVE_ARCH_UNMAP_ONE
 static inline int arch_unmap_one(struct mm_struct *mm,
-				 struct vm_area_struct *vma,
+				 struct mm_area *vma,
 				 unsigned long addr, pte_t oldpte)
 {
 	if (adi_state.enabled && (pte_val(oldpte) & _PAGE_MCD_4V))
@@ -1086,7 +1086,7 @@ static inline int arch_unmap_one(struct mm_struct *mm,
 	return 0;
 }
 
-static inline int io_remap_pfn_range(struct vm_area_struct *vma,
+static inline int io_remap_pfn_range(struct mm_area *vma,
 				     unsigned long from, unsigned long pfn,
 				     unsigned long size, pgprot_t prot)
 {
diff --git a/arch/sparc/include/asm/tlbflush_64.h b/arch/sparc/include/asm/tlbflush_64.h
index 8b8cdaa69272..c41114cbd3fe 100644
--- a/arch/sparc/include/asm/tlbflush_64.h
+++ b/arch/sparc/include/asm/tlbflush_64.h
@@ -27,12 +27,12 @@ static inline void flush_tlb_mm(struct mm_struct *mm)
 {
 }
 
-static inline void flush_tlb_page(struct vm_area_struct *vma,
+static inline void flush_tlb_page(struct mm_area *vma,
 				  unsigned long vmaddr)
 {
 }
 
-static inline void flush_tlb_range(struct vm_area_struct *vma,
+static inline void flush_tlb_range(struct mm_area *vma,
 				   unsigned long start, unsigned long end)
 {
 }
diff --git a/arch/sparc/kernel/adi_64.c b/arch/sparc/kernel/adi_64.c
index e0e4fc527b24..3e7c7bb97fd8 100644
--- a/arch/sparc/kernel/adi_64.c
+++ b/arch/sparc/kernel/adi_64.c
@@ -122,7 +122,7 @@ void __init mdesc_adi_init(void)
 }
 
 static tag_storage_desc_t *find_tag_store(struct mm_struct *mm,
-					  struct vm_area_struct *vma,
+					  struct mm_area *vma,
 					  unsigned long addr)
 {
 	tag_storage_desc_t *tag_desc = NULL;
@@ -154,7 +154,7 @@ static tag_storage_desc_t *find_tag_store(struct mm_struct *mm,
 }
 
 static tag_storage_desc_t *alloc_tag_store(struct mm_struct *mm,
-					   struct vm_area_struct *vma,
+					   struct mm_area *vma,
 					   unsigned long addr)
 {
 	unsigned char *tags;
@@ -324,7 +324,7 @@ static void del_tag_store(tag_storage_desc_t *tag_desc, struct mm_struct *mm)
 /* Retrieve any saved ADI tags for the page being swapped back in and
  * restore these tags to the newly allocated physical page.
  */
-void adi_restore_tags(struct mm_struct *mm, struct vm_area_struct *vma,
+void adi_restore_tags(struct mm_struct *mm, struct mm_area *vma,
 		      unsigned long addr, pte_t pte)
 {
 	unsigned char *tag;
@@ -367,7 +367,7 @@ void adi_restore_tags(struct mm_struct *mm, struct vm_area_struct *vma,
  * this physical page so they can be restored later when the page is swapped
  * back in.
  */
-int adi_save_tags(struct mm_struct *mm, struct vm_area_struct *vma,
+int adi_save_tags(struct mm_struct *mm, struct mm_area *vma,
 		  unsigned long addr, pte_t oldpte)
 {
 	unsigned char *tag;
diff --git a/arch/sparc/kernel/asm-offsets.c b/arch/sparc/kernel/asm-offsets.c
index 3d9b9855dce9..360c8cb8f396 100644
--- a/arch/sparc/kernel/asm-offsets.c
+++ b/arch/sparc/kernel/asm-offsets.c
@@ -52,7 +52,7 @@ static int __used foo(void)
 	BLANK();
 	DEFINE(AOFF_mm_context, offsetof(struct mm_struct, context));
 	BLANK();
-	DEFINE(VMA_VM_MM,    offsetof(struct vm_area_struct, vm_mm));
+	DEFINE(VMA_VM_MM,    offsetof(struct mm_area, vm_mm));
 
 	/* DEFINE(NUM_USER_SEGMENTS, TASK_SIZE>>28); */
 	return 0;
diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c
index ddac216a2aff..64767a6e60cd 100644
--- a/arch/sparc/kernel/pci.c
+++ b/arch/sparc/kernel/pci.c
@@ -750,7 +750,7 @@ int pcibios_enable_device(struct pci_dev *dev, int mask)
 }
 
 /* Platform support for /proc/bus/pci/X/Y mmap()s. */
-int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct vm_area_struct *vma)
+int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct mm_area *vma)
 {
 	struct pci_pbm_info *pbm = pdev->dev.archdata.host_controller;
 	resource_size_t ioaddr = pci_resource_start(pdev, bar);
diff --git a/arch/sparc/kernel/ptrace_64.c b/arch/sparc/kernel/ptrace_64.c
index 4deba5b6eddb..2bbee6413504 100644
--- a/arch/sparc/kernel/ptrace_64.c
+++ b/arch/sparc/kernel/ptrace_64.c
@@ -103,7 +103,7 @@ void ptrace_disable(struct task_struct *child)
  *    has been created
  * 2) flush the I-cache if this is pre-cheetah and we did a write
  */
-void flush_ptrace_access(struct vm_area_struct *vma, struct page *page,
+void flush_ptrace_access(struct mm_area *vma, struct page *page,
 			 unsigned long uaddr, void *kaddr,
 			 unsigned long len, int write)
 {
diff --git a/arch/sparc/kernel/sys_sparc_64.c b/arch/sparc/kernel/sys_sparc_64.c
index c5a284df7b41..261c971b346a 100644
--- a/arch/sparc/kernel/sys_sparc_64.c
+++ b/arch/sparc/kernel/sys_sparc_64.c
@@ -101,7 +101,7 @@ static unsigned long get_align_mask(struct file *filp, unsigned long flags)
 unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len, unsigned long pgoff, unsigned long flags, vm_flags_t vm_flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct * vma;
+	struct mm_area * vma;
 	unsigned long task_size = TASK_SIZE;
 	int do_color_align;
 	struct vm_unmapped_area_info info = {};
@@ -164,7 +164,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
 			  const unsigned long len, const unsigned long pgoff,
 			  const unsigned long flags, vm_flags_t vm_flags)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm = current->mm;
 	unsigned long task_size = STACK_TOP32;
 	unsigned long addr = addr0;
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c
index 86a831ebd8c8..27bb2c2a8d54 100644
--- a/arch/sparc/mm/fault_32.c
+++ b/arch/sparc/mm/fault_32.c
@@ -112,7 +112,7 @@ static noinline void do_fault_siginfo(int code, int sig, struct pt_regs *regs,
 asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
 			       unsigned long address)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct task_struct *tsk = current;
 	struct mm_struct *mm = tsk->mm;
 	int from_user = !(regs->psr & PSR_PS);
@@ -304,7 +304,7 @@ asmlinkage void do_sparc_fault(struct pt_regs *regs, int text_fault, int write,
 /* This always deals with user addresses. */
 static void force_user_fault(unsigned long address, int write)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct task_struct *tsk = current;
 	struct mm_struct *mm = tsk->mm;
 	unsigned int flags = FAULT_FLAG_USER;
diff --git a/arch/sparc/mm/fault_64.c b/arch/sparc/mm/fault_64.c
index e326caf708c6..1dd10e512d61 100644
--- a/arch/sparc/mm/fault_64.c
+++ b/arch/sparc/mm/fault_64.c
@@ -268,7 +268,7 @@ asmlinkage void __kprobes do_sparc64_fault(struct pt_regs *regs)
 {
 	enum ctx_state prev_state = exception_enter();
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned int insn = 0;
 	int si_code, fault_code;
 	vm_fault_t fault;
diff --git a/arch/sparc/mm/hugetlbpage.c b/arch/sparc/mm/hugetlbpage.c
index 80504148d8a5..c02f3fa3a0fa 100644
--- a/arch/sparc/mm/hugetlbpage.c
+++ b/arch/sparc/mm/hugetlbpage.c
@@ -167,7 +167,7 @@ unsigned long pud_leaf_size(pud_t pud) { return 1UL << tte_to_shift(*(pte_t *)&p
 unsigned long pmd_leaf_size(pmd_t pmd) { return 1UL << tte_to_shift(*(pte_t *)&pmd); }
 unsigned long pte_leaf_size(pte_t pte) { return 1UL << tte_to_shift(pte); }
 
-pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pte_alloc(struct mm_struct *mm, struct mm_area *vma,
 			unsigned long addr, unsigned long sz)
 {
 	pgd_t *pgd;
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index 760818950464..235770b832be 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -394,7 +394,7 @@ bool __init arch_hugetlb_valid_size(unsigned long size)
 }
 #endif	/* CONFIG_HUGETLB_PAGE */
 
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long address, pte_t *ptep, unsigned int nr)
 {
 	struct mm_struct *mm;
@@ -2945,7 +2945,7 @@ void pte_free_defer(struct mm_struct *mm, pgtable_t pgtable)
 	call_rcu(&page->rcu_head, pte_free_now);
 }
 
-void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr,
+void update_mmu_cache_pmd(struct mm_area *vma, unsigned long addr,
 			  pmd_t *pmd)
 {
 	unsigned long pte, flags;
@@ -3134,7 +3134,7 @@ void flush_tlb_kernel_range(unsigned long start, unsigned long end)
 }
 
 void copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	char *vfrom, *vto;
 
diff --git a/arch/sparc/mm/leon_mm.c b/arch/sparc/mm/leon_mm.c
index 1dc9b3d70eda..2e36b02d81d2 100644
--- a/arch/sparc/mm/leon_mm.c
+++ b/arch/sparc/mm/leon_mm.c
@@ -185,7 +185,7 @@ void leon_flush_dcache_all(void)
 			     "i"(ASI_LEON_DFLUSH) : "memory");
 }
 
-void leon_flush_pcache_all(struct vm_area_struct *vma, unsigned long page)
+void leon_flush_pcache_all(struct mm_area *vma, unsigned long page)
 {
 	if (vma->vm_flags & VM_EXEC)
 		leon_flush_icache_all();
@@ -273,12 +273,12 @@ static void leon_flush_cache_mm(struct mm_struct *mm)
 	leon_flush_cache_all();
 }
 
-static void leon_flush_cache_page(struct vm_area_struct *vma, unsigned long page)
+static void leon_flush_cache_page(struct mm_area *vma, unsigned long page)
 {
 	leon_flush_pcache_all(vma, page);
 }
 
-static void leon_flush_cache_range(struct vm_area_struct *vma,
+static void leon_flush_cache_range(struct mm_area *vma,
 				   unsigned long start,
 				   unsigned long end)
 {
@@ -290,13 +290,13 @@ static void leon_flush_tlb_mm(struct mm_struct *mm)
 	leon_flush_tlb_all();
 }
 
-static void leon_flush_tlb_page(struct vm_area_struct *vma,
+static void leon_flush_tlb_page(struct mm_area *vma,
 				unsigned long page)
 {
 	leon_flush_tlb_all();
 }
 
-static void leon_flush_tlb_range(struct vm_area_struct *vma,
+static void leon_flush_tlb_range(struct mm_area *vma,
 				 unsigned long start,
 				 unsigned long end)
 {
diff --git a/arch/sparc/mm/srmmu.c b/arch/sparc/mm/srmmu.c
index dd32711022f5..1337bc4daf6f 100644
--- a/arch/sparc/mm/srmmu.c
+++ b/arch/sparc/mm/srmmu.c
@@ -555,34 +555,34 @@ void srmmu_unmapiorange(unsigned long virt_addr, unsigned int len)
 /* tsunami.S */
 extern void tsunami_flush_cache_all(void);
 extern void tsunami_flush_cache_mm(struct mm_struct *mm);
-extern void tsunami_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
-extern void tsunami_flush_cache_page(struct vm_area_struct *vma, unsigned long page);
+extern void tsunami_flush_cache_range(struct mm_area *vma, unsigned long start, unsigned long end);
+extern void tsunami_flush_cache_page(struct mm_area *vma, unsigned long page);
 extern void tsunami_flush_page_to_ram(unsigned long page);
 extern void tsunami_flush_page_for_dma(unsigned long page);
 extern void tsunami_flush_sig_insns(struct mm_struct *mm, unsigned long insn_addr);
 extern void tsunami_flush_tlb_all(void);
 extern void tsunami_flush_tlb_mm(struct mm_struct *mm);
-extern void tsunami_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
-extern void tsunami_flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
+extern void tsunami_flush_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end);
+extern void tsunami_flush_tlb_page(struct mm_area *vma, unsigned long page);
 extern void tsunami_setup_blockops(void);
 
 /* swift.S */
 extern void swift_flush_cache_all(void);
 extern void swift_flush_cache_mm(struct mm_struct *mm);
-extern void swift_flush_cache_range(struct vm_area_struct *vma,
+extern void swift_flush_cache_range(struct mm_area *vma,
 				    unsigned long start, unsigned long end);
-extern void swift_flush_cache_page(struct vm_area_struct *vma, unsigned long page);
+extern void swift_flush_cache_page(struct mm_area *vma, unsigned long page);
 extern void swift_flush_page_to_ram(unsigned long page);
 extern void swift_flush_page_for_dma(unsigned long page);
 extern void swift_flush_sig_insns(struct mm_struct *mm, unsigned long insn_addr);
 extern void swift_flush_tlb_all(void);
 extern void swift_flush_tlb_mm(struct mm_struct *mm);
-extern void swift_flush_tlb_range(struct vm_area_struct *vma,
+extern void swift_flush_tlb_range(struct mm_area *vma,
 				  unsigned long start, unsigned long end);
-extern void swift_flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
+extern void swift_flush_tlb_page(struct mm_area *vma, unsigned long page);
 
 #if 0  /* P3: deadwood to debug precise flushes on Swift. */
-void swift_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+void swift_flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	int cctx, ctx1;
 
@@ -621,9 +621,9 @@ void swift_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
 /* viking.S */
 extern void viking_flush_cache_all(void);
 extern void viking_flush_cache_mm(struct mm_struct *mm);
-extern void viking_flush_cache_range(struct vm_area_struct *vma, unsigned long start,
+extern void viking_flush_cache_range(struct mm_area *vma, unsigned long start,
 				     unsigned long end);
-extern void viking_flush_cache_page(struct vm_area_struct *vma, unsigned long page);
+extern void viking_flush_cache_page(struct mm_area *vma, unsigned long page);
 extern void viking_flush_page_to_ram(unsigned long page);
 extern void viking_flush_page_for_dma(unsigned long page);
 extern void viking_flush_sig_insns(struct mm_struct *mm, unsigned long addr);
@@ -631,29 +631,29 @@ extern void viking_flush_page(unsigned long page);
 extern void viking_mxcc_flush_page(unsigned long page);
 extern void viking_flush_tlb_all(void);
 extern void viking_flush_tlb_mm(struct mm_struct *mm);
-extern void viking_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+extern void viking_flush_tlb_range(struct mm_area *vma, unsigned long start,
 				   unsigned long end);
-extern void viking_flush_tlb_page(struct vm_area_struct *vma,
+extern void viking_flush_tlb_page(struct mm_area *vma,
 				  unsigned long page);
 extern void sun4dsmp_flush_tlb_all(void);
 extern void sun4dsmp_flush_tlb_mm(struct mm_struct *mm);
-extern void sun4dsmp_flush_tlb_range(struct vm_area_struct *vma, unsigned long start,
+extern void sun4dsmp_flush_tlb_range(struct mm_area *vma, unsigned long start,
 				   unsigned long end);
-extern void sun4dsmp_flush_tlb_page(struct vm_area_struct *vma,
+extern void sun4dsmp_flush_tlb_page(struct mm_area *vma,
 				  unsigned long page);
 
 /* hypersparc.S */
 extern void hypersparc_flush_cache_all(void);
 extern void hypersparc_flush_cache_mm(struct mm_struct *mm);
-extern void hypersparc_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
-extern void hypersparc_flush_cache_page(struct vm_area_struct *vma, unsigned long page);
+extern void hypersparc_flush_cache_range(struct mm_area *vma, unsigned long start, unsigned long end);
+extern void hypersparc_flush_cache_page(struct mm_area *vma, unsigned long page);
 extern void hypersparc_flush_page_to_ram(unsigned long page);
 extern void hypersparc_flush_page_for_dma(unsigned long page);
 extern void hypersparc_flush_sig_insns(struct mm_struct *mm, unsigned long insn_addr);
 extern void hypersparc_flush_tlb_all(void);
 extern void hypersparc_flush_tlb_mm(struct mm_struct *mm);
-extern void hypersparc_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end);
-extern void hypersparc_flush_tlb_page(struct vm_area_struct *vma, unsigned long page);
+extern void hypersparc_flush_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end);
+extern void hypersparc_flush_tlb_page(struct mm_area *vma, unsigned long page);
 extern void hypersparc_setup_blockops(void);
 
 /*
@@ -1235,7 +1235,7 @@ static void turbosparc_flush_cache_mm(struct mm_struct *mm)
 	FLUSH_END
 }
 
-static void turbosparc_flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+static void turbosparc_flush_cache_range(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	FLUSH_BEGIN(vma->vm_mm)
 	flush_user_windows();
@@ -1243,7 +1243,7 @@ static void turbosparc_flush_cache_range(struct vm_area_struct *vma, unsigned lo
 	FLUSH_END
 }
 
-static void turbosparc_flush_cache_page(struct vm_area_struct *vma, unsigned long page)
+static void turbosparc_flush_cache_page(struct mm_area *vma, unsigned long page)
 {
 	FLUSH_BEGIN(vma->vm_mm)
 	flush_user_windows();
@@ -1286,14 +1286,14 @@ static void turbosparc_flush_tlb_mm(struct mm_struct *mm)
 	FLUSH_END
 }
 
-static void turbosparc_flush_tlb_range(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+static void turbosparc_flush_tlb_range(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	FLUSH_BEGIN(vma->vm_mm)
 	srmmu_flush_whole_tlb();
 	FLUSH_END
 }
 
-static void turbosparc_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+static void turbosparc_flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	FLUSH_BEGIN(vma->vm_mm)
 	srmmu_flush_whole_tlb();
@@ -1672,7 +1672,7 @@ static void smp_flush_tlb_mm(struct mm_struct *mm)
 	}
 }
 
-static void smp_flush_cache_range(struct vm_area_struct *vma,
+static void smp_flush_cache_range(struct mm_area *vma,
 				  unsigned long start,
 				  unsigned long end)
 {
@@ -1686,7 +1686,7 @@ static void smp_flush_cache_range(struct vm_area_struct *vma,
 	}
 }
 
-static void smp_flush_tlb_range(struct vm_area_struct *vma,
+static void smp_flush_tlb_range(struct mm_area *vma,
 				unsigned long start,
 				unsigned long end)
 {
@@ -1700,7 +1700,7 @@ static void smp_flush_tlb_range(struct vm_area_struct *vma,
 	}
 }
 
-static void smp_flush_cache_page(struct vm_area_struct *vma, unsigned long page)
+static void smp_flush_cache_page(struct mm_area *vma, unsigned long page)
 {
 	struct mm_struct *mm = vma->vm_mm;
 
@@ -1711,7 +1711,7 @@ static void smp_flush_cache_page(struct vm_area_struct *vma, unsigned long page)
 	}
 }
 
-static void smp_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+static void smp_flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	struct mm_struct *mm = vma->vm_mm;
 
diff --git a/arch/sparc/mm/tlb.c b/arch/sparc/mm/tlb.c
index a35ddcca5e76..dd950cbd4fd7 100644
--- a/arch/sparc/mm/tlb.c
+++ b/arch/sparc/mm/tlb.c
@@ -231,7 +231,7 @@ void set_pmd_at(struct mm_struct *mm, unsigned long addr,
 	__set_pmd_acct(mm, addr, orig, pmd);
 }
 
-static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
+static inline pmd_t pmdp_establish(struct mm_area *vma,
 		unsigned long address, pmd_t *pmdp, pmd_t pmd)
 {
 	pmd_t old;
@@ -247,7 +247,7 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
 /*
  * This routine is only called when splitting a THP
  */
-pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
+pmd_t pmdp_invalidate(struct mm_area *vma, unsigned long address,
 		     pmd_t *pmdp)
 {
 	pmd_t old, entry;
diff --git a/arch/sparc/vdso/vma.c b/arch/sparc/vdso/vma.c
index bab7a59575e8..f8124af4d6f0 100644
--- a/arch/sparc/vdso/vma.c
+++ b/arch/sparc/vdso/vma.c
@@ -363,7 +363,7 @@ static int map_vdso(const struct vdso_image *image,
 		struct vm_special_mapping *vdso_mapping)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long text_start, addr = 0;
 	int ret = 0;
 
diff --git a/arch/um/drivers/mmapper_kern.c b/arch/um/drivers/mmapper_kern.c
index 807cd3358740..0cb875338307 100644
--- a/arch/um/drivers/mmapper_kern.c
+++ b/arch/um/drivers/mmapper_kern.c
@@ -46,7 +46,7 @@ static long mmapper_ioctl(struct file *file, unsigned int cmd, unsigned long arg
 	return -ENOIOCTLCMD;
 }
 
-static int mmapper_mmap(struct file *file, struct vm_area_struct *vma)
+static int mmapper_mmap(struct file *file, struct mm_area *vma)
 {
 	int ret = -EINVAL;
 	int size;
diff --git a/arch/um/include/asm/tlbflush.h b/arch/um/include/asm/tlbflush.h
index 13a3009942be..cb9e58edd300 100644
--- a/arch/um/include/asm/tlbflush.h
+++ b/arch/um/include/asm/tlbflush.h
@@ -35,13 +35,13 @@ extern int um_tlb_sync(struct mm_struct *mm);
 extern void flush_tlb_all(void);
 extern void flush_tlb_mm(struct mm_struct *mm);
 
-static inline void flush_tlb_page(struct vm_area_struct *vma,
+static inline void flush_tlb_page(struct mm_area *vma,
 				  unsigned long address)
 {
 	um_tlb_mark_sync(vma->vm_mm, address, address + PAGE_SIZE);
 }
 
-static inline void flush_tlb_range(struct vm_area_struct *vma,
+static inline void flush_tlb_range(struct mm_area *vma,
 				   unsigned long start, unsigned long end)
 {
 	um_tlb_mark_sync(vma->vm_mm, start, end);
diff --git a/arch/um/kernel/tlb.c b/arch/um/kernel/tlb.c
index cf7e0d4407f2..9d8fc85b2896 100644
--- a/arch/um/kernel/tlb.c
+++ b/arch/um/kernel/tlb.c
@@ -214,7 +214,7 @@ void flush_tlb_all(void)
 
 void flush_tlb_mm(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	for_each_vma(vmi, vma)
diff --git a/arch/um/kernel/trap.c b/arch/um/kernel/trap.c
index ce073150dc20..22dd6c703a70 100644
--- a/arch/um/kernel/trap.c
+++ b/arch/um/kernel/trap.c
@@ -26,7 +26,7 @@ int handle_page_fault(unsigned long address, unsigned long ip,
 		      int is_write, int is_user, int *code_out)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	pmd_t *pmd;
 	pte_t *pte;
 	int err = -EFAULT;
diff --git a/arch/x86/entry/vdso/vma.c b/arch/x86/entry/vdso/vma.c
index adb299d3b6a1..987c2d16ed16 100644
--- a/arch/x86/entry/vdso/vma.c
+++ b/arch/x86/entry/vdso/vma.c
@@ -50,7 +50,7 @@ int __init init_vdso_image(const struct vdso_image *image)
 struct linux_binprm;
 
 static vm_fault_t vdso_fault(const struct vm_special_mapping *sm,
-		      struct vm_area_struct *vma, struct vm_fault *vmf)
+		      struct mm_area *vma, struct vm_fault *vmf)
 {
 	const struct vdso_image *image = vma->vm_mm->context.vdso_image;
 
@@ -63,7 +63,7 @@ static vm_fault_t vdso_fault(const struct vm_special_mapping *sm,
 }
 
 static void vdso_fix_landing(const struct vdso_image *image,
-		struct vm_area_struct *new_vma)
+		struct mm_area *new_vma)
 {
 #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION
 	if (in_ia32_syscall() && image == &vdso_image_32) {
@@ -80,7 +80,7 @@ static void vdso_fix_landing(const struct vdso_image *image,
 }
 
 static int vdso_mremap(const struct vm_special_mapping *sm,
-		struct vm_area_struct *new_vma)
+		struct mm_area *new_vma)
 {
 	const struct vdso_image *image = current->mm->context.vdso_image;
 
@@ -91,7 +91,7 @@ static int vdso_mremap(const struct vm_special_mapping *sm,
 }
 
 static vm_fault_t vvar_vclock_fault(const struct vm_special_mapping *sm,
-				    struct vm_area_struct *vma, struct vm_fault *vmf)
+				    struct mm_area *vma, struct vm_fault *vmf)
 {
 	switch (vmf->pgoff) {
 #ifdef CONFIG_PARAVIRT_CLOCK
@@ -139,7 +139,7 @@ static const struct vm_special_mapping vvar_vclock_mapping = {
 static int map_vdso(const struct vdso_image *image, unsigned long addr)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long text_start;
 	int ret = 0;
 
@@ -203,7 +203,7 @@ static int map_vdso(const struct vdso_image *image, unsigned long addr)
 int map_vdso_once(const struct vdso_image *image, unsigned long addr)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	mmap_write_lock(mm);
diff --git a/arch/x86/entry/vsyscall/vsyscall_64.c b/arch/x86/entry/vsyscall/vsyscall_64.c
index 2fb7d53cf333..155a54569893 100644
--- a/arch/x86/entry/vsyscall/vsyscall_64.c
+++ b/arch/x86/entry/vsyscall/vsyscall_64.c
@@ -275,14 +275,14 @@ bool emulate_vsyscall(unsigned long error_code,
  * covers the 64bit vsyscall page now. 32bit has a real VMA now and does
  * not need special handling anymore:
  */
-static const char *gate_vma_name(struct vm_area_struct *vma)
+static const char *gate_vma_name(struct mm_area *vma)
 {
 	return "[vsyscall]";
 }
 static const struct vm_operations_struct gate_vma_ops = {
 	.name = gate_vma_name,
 };
-static struct vm_area_struct gate_vma __ro_after_init = {
+static struct mm_area gate_vma __ro_after_init = {
 	.vm_start	= VSYSCALL_ADDR,
 	.vm_end		= VSYSCALL_ADDR + PAGE_SIZE,
 	.vm_page_prot	= PAGE_READONLY_EXEC,
@@ -290,7 +290,7 @@ static struct vm_area_struct gate_vma __ro_after_init = {
 	.vm_ops		= &gate_vma_ops,
 };
 
-struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
+struct mm_area *get_gate_vma(struct mm_struct *mm)
 {
 #ifdef CONFIG_COMPAT
 	if (!mm || !test_bit(MM_CONTEXT_HAS_VSYSCALL, &mm->context.flags))
@@ -303,7 +303,7 @@ struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
 
 int in_gate_area(struct mm_struct *mm, unsigned long addr)
 {
-	struct vm_area_struct *vma = get_gate_vma(mm);
+	struct mm_area *vma = get_gate_vma(mm);
 
 	if (!vma)
 		return 0;
diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
index 2398058b6e83..45915a6f2b9e 100644
--- a/arch/x86/include/asm/mmu_context.h
+++ b/arch/x86/include/asm/mmu_context.h
@@ -256,7 +256,7 @@ static inline bool is_64bit_mm(struct mm_struct *mm)
  * So do not enforce things if the VMA is not from the current
  * mm, or if we are in a kernel thread.
  */
-static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
+static inline bool arch_vma_access_permitted(struct mm_area *vma,
 		bool write, bool execute, bool foreign)
 {
 	/* pkeys never affect instruction fetches */
diff --git a/arch/x86/include/asm/paravirt.h b/arch/x86/include/asm/paravirt.h
index c4c23190925c..3e73c01c3ba0 100644
--- a/arch/x86/include/asm/paravirt.h
+++ b/arch/x86/include/asm/paravirt.h
@@ -402,7 +402,7 @@ static inline pgdval_t pgd_val(pgd_t pgd)
 }
 
 #define  __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION
-static inline pte_t ptep_modify_prot_start(struct vm_area_struct *vma, unsigned long addr,
+static inline pte_t ptep_modify_prot_start(struct mm_area *vma, unsigned long addr,
 					   pte_t *ptep)
 {
 	pteval_t ret;
@@ -412,7 +412,7 @@ static inline pte_t ptep_modify_prot_start(struct vm_area_struct *vma, unsigned
 	return (pte_t) { .pte = ret };
 }
 
-static inline void ptep_modify_prot_commit(struct vm_area_struct *vma, unsigned long addr,
+static inline void ptep_modify_prot_commit(struct mm_area *vma, unsigned long addr,
 					   pte_t *ptep, pte_t old_pte, pte_t pte)
 {
 
diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
index 631c306ce1ff..dd67df3d8d0d 100644
--- a/arch/x86/include/asm/paravirt_types.h
+++ b/arch/x86/include/asm/paravirt_types.h
@@ -21,7 +21,7 @@ struct task_struct;
 struct cpumask;
 struct flush_tlb_info;
 struct mmu_gather;
-struct vm_area_struct;
+struct mm_area;
 
 /*
  * Wrapper type for pointers to code which uses the non-standard
@@ -168,9 +168,9 @@ struct pv_mmu_ops {
 	void (*set_pte)(pte_t *ptep, pte_t pteval);
 	void (*set_pmd)(pmd_t *pmdp, pmd_t pmdval);
 
-	pte_t (*ptep_modify_prot_start)(struct vm_area_struct *vma, unsigned long addr,
+	pte_t (*ptep_modify_prot_start)(struct mm_area *vma, unsigned long addr,
 					pte_t *ptep);
-	void (*ptep_modify_prot_commit)(struct vm_area_struct *vma, unsigned long addr,
+	void (*ptep_modify_prot_commit)(struct mm_area *vma, unsigned long addr,
 					pte_t *ptep, pte_t pte);
 
 	struct paravirt_callee_save pte_val;
diff --git a/arch/x86/include/asm/pgtable-3level.h b/arch/x86/include/asm/pgtable-3level.h
index dabafba957ea..b39a39a46f7a 100644
--- a/arch/x86/include/asm/pgtable-3level.h
+++ b/arch/x86/include/asm/pgtable-3level.h
@@ -122,7 +122,7 @@ static inline pud_t native_pudp_get_and_clear(pud_t *pudp)
 
 #ifndef pmdp_establish
 #define pmdp_establish pmdp_establish
-static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
+static inline pmd_t pmdp_establish(struct mm_area *vma,
 		unsigned long address, pmd_t *pmdp, pmd_t pmd)
 {
 	pmd_t old;
diff --git a/arch/x86/include/asm/pgtable.h b/arch/x86/include/asm/pgtable.h
index 5ddba366d3b4..1415b469056b 100644
--- a/arch/x86/include/asm/pgtable.h
+++ b/arch/x86/include/asm/pgtable.h
@@ -498,8 +498,8 @@ static inline pte_t pte_mkwrite_novma(pte_t pte)
 	return pte_set_flags(pte, _PAGE_RW);
 }
 
-struct vm_area_struct;
-pte_t pte_mkwrite(pte_t pte, struct vm_area_struct *vma);
+struct mm_area;
+pte_t pte_mkwrite(pte_t pte, struct mm_area *vma);
 #define pte_mkwrite pte_mkwrite
 
 static inline pte_t pte_mkhuge(pte_t pte)
@@ -623,7 +623,7 @@ static inline pmd_t pmd_mkwrite_novma(pmd_t pmd)
 	return pmd_set_flags(pmd, _PAGE_RW);
 }
 
-pmd_t pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma);
+pmd_t pmd_mkwrite(pmd_t pmd, struct mm_area *vma);
 #define pmd_mkwrite pmd_mkwrite
 
 /* See comments above mksaveddirty_shift() */
@@ -1291,19 +1291,19 @@ static inline void set_pud_at(struct mm_struct *mm, unsigned long addr,
  * race with other CPU's that might be updating the dirty
  * bit at the same time.
  */
-struct vm_area_struct;
+struct mm_area;
 
 #define  __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
-extern int ptep_set_access_flags(struct vm_area_struct *vma,
+extern int ptep_set_access_flags(struct mm_area *vma,
 				 unsigned long address, pte_t *ptep,
 				 pte_t entry, int dirty);
 
 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
-extern int ptep_test_and_clear_young(struct vm_area_struct *vma,
+extern int ptep_test_and_clear_young(struct mm_area *vma,
 				     unsigned long addr, pte_t *ptep);
 
 #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
-extern int ptep_clear_flush_young(struct vm_area_struct *vma,
+extern int ptep_clear_flush_young(struct mm_area *vma,
 				  unsigned long address, pte_t *ptep);
 
 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR
@@ -1356,21 +1356,21 @@ static inline void ptep_set_wrprotect(struct mm_struct *mm,
 #define mk_pmd(page, pgprot)   pfn_pmd(page_to_pfn(page), (pgprot))
 
 #define  __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS
-extern int pmdp_set_access_flags(struct vm_area_struct *vma,
+extern int pmdp_set_access_flags(struct mm_area *vma,
 				 unsigned long address, pmd_t *pmdp,
 				 pmd_t entry, int dirty);
-extern int pudp_set_access_flags(struct vm_area_struct *vma,
+extern int pudp_set_access_flags(struct mm_area *vma,
 				 unsigned long address, pud_t *pudp,
 				 pud_t entry, int dirty);
 
 #define __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG
-extern int pmdp_test_and_clear_young(struct vm_area_struct *vma,
+extern int pmdp_test_and_clear_young(struct mm_area *vma,
 				     unsigned long addr, pmd_t *pmdp);
-extern int pudp_test_and_clear_young(struct vm_area_struct *vma,
+extern int pudp_test_and_clear_young(struct mm_area *vma,
 				     unsigned long addr, pud_t *pudp);
 
 #define __HAVE_ARCH_PMDP_CLEAR_YOUNG_FLUSH
-extern int pmdp_clear_flush_young(struct vm_area_struct *vma,
+extern int pmdp_clear_flush_young(struct mm_area *vma,
 				  unsigned long address, pmd_t *pmdp);
 
 
@@ -1415,7 +1415,7 @@ static inline void pmdp_set_wrprotect(struct mm_struct *mm,
 
 #ifndef pmdp_establish
 #define pmdp_establish pmdp_establish
-static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
+static inline pmd_t pmdp_establish(struct mm_area *vma,
 		unsigned long address, pmd_t *pmdp, pmd_t pmd)
 {
 	page_table_check_pmd_set(vma->vm_mm, pmdp, pmd);
@@ -1430,7 +1430,7 @@ static inline pmd_t pmdp_establish(struct vm_area_struct *vma,
 #endif
 
 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
-static inline pud_t pudp_establish(struct vm_area_struct *vma,
+static inline pud_t pudp_establish(struct mm_area *vma,
 		unsigned long address, pud_t *pudp, pud_t pud)
 {
 	page_table_check_pud_set(vma->vm_mm, pudp, pud);
@@ -1445,10 +1445,10 @@ static inline pud_t pudp_establish(struct vm_area_struct *vma,
 #endif
 
 #define __HAVE_ARCH_PMDP_INVALIDATE_AD
-extern pmd_t pmdp_invalidate_ad(struct vm_area_struct *vma,
+extern pmd_t pmdp_invalidate_ad(struct mm_area *vma,
 				unsigned long address, pmd_t *pmdp);
 
-pud_t pudp_invalidate(struct vm_area_struct *vma, unsigned long address,
+pud_t pudp_invalidate(struct mm_area *vma, unsigned long address,
 		      pud_t *pudp);
 
 /*
@@ -1554,20 +1554,20 @@ static inline unsigned long page_level_mask(enum pg_level level)
  * The x86 doesn't have any external MMU info: the kernel page
  * tables contain all the necessary information.
  */
-static inline void update_mmu_cache(struct vm_area_struct *vma,
+static inline void update_mmu_cache(struct mm_area *vma,
 		unsigned long addr, pte_t *ptep)
 {
 }
 static inline void update_mmu_cache_range(struct vm_fault *vmf,
-		struct vm_area_struct *vma, unsigned long addr,
+		struct mm_area *vma, unsigned long addr,
 		pte_t *ptep, unsigned int nr)
 {
 }
-static inline void update_mmu_cache_pmd(struct vm_area_struct *vma,
+static inline void update_mmu_cache_pmd(struct mm_area *vma,
 		unsigned long addr, pmd_t *pmd)
 {
 }
-static inline void update_mmu_cache_pud(struct vm_area_struct *vma,
+static inline void update_mmu_cache_pud(struct mm_area *vma,
 		unsigned long addr, pud_t *pud)
 {
 }
@@ -1724,13 +1724,13 @@ static inline bool arch_has_pfn_modify_check(void)
 }
 
 #define arch_check_zapped_pte arch_check_zapped_pte
-void arch_check_zapped_pte(struct vm_area_struct *vma, pte_t pte);
+void arch_check_zapped_pte(struct mm_area *vma, pte_t pte);
 
 #define arch_check_zapped_pmd arch_check_zapped_pmd
-void arch_check_zapped_pmd(struct vm_area_struct *vma, pmd_t pmd);
+void arch_check_zapped_pmd(struct mm_area *vma, pmd_t pmd);
 
 #define arch_check_zapped_pud arch_check_zapped_pud
-void arch_check_zapped_pud(struct vm_area_struct *vma, pud_t pud);
+void arch_check_zapped_pud(struct mm_area *vma, pud_t pud);
 
 #ifdef CONFIG_XEN_PV
 #define arch_has_hw_nonleaf_pmd_young arch_has_hw_nonleaf_pmd_young
diff --git a/arch/x86/include/asm/pgtable_32.h b/arch/x86/include/asm/pgtable_32.h
index b612cc57a4d3..ce08b06f7b85 100644
--- a/arch/x86/include/asm/pgtable_32.h
+++ b/arch/x86/include/asm/pgtable_32.h
@@ -23,7 +23,7 @@
 #include <linux/spinlock.h>
 
 struct mm_struct;
-struct vm_area_struct;
+struct mm_area;
 
 extern pgd_t swapper_pg_dir[1024];
 extern pgd_t initial_page_table[1024];
diff --git a/arch/x86/include/asm/pkeys.h b/arch/x86/include/asm/pkeys.h
index 2e6c04d8a45b..c92d445a2d4d 100644
--- a/arch/x86/include/asm/pkeys.h
+++ b/arch/x86/include/asm/pkeys.h
@@ -30,9 +30,9 @@ static inline int execute_only_pkey(struct mm_struct *mm)
 	return __execute_only_pkey(mm);
 }
 
-extern int __arch_override_mprotect_pkey(struct vm_area_struct *vma,
+extern int __arch_override_mprotect_pkey(struct mm_area *vma,
 		int prot, int pkey);
-static inline int arch_override_mprotect_pkey(struct vm_area_struct *vma,
+static inline int arch_override_mprotect_pkey(struct mm_area *vma,
 		int prot, int pkey)
 {
 	if (!cpu_feature_enabled(X86_FEATURE_OSPKE))
@@ -115,7 +115,7 @@ int mm_pkey_free(struct mm_struct *mm, int pkey)
 	return 0;
 }
 
-static inline int vma_pkey(struct vm_area_struct *vma)
+static inline int vma_pkey(struct mm_area *vma)
 {
 	unsigned long vma_pkey_mask = VM_PKEY_BIT0 | VM_PKEY_BIT1 |
 				      VM_PKEY_BIT2 | VM_PKEY_BIT3;
diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h
index e9b81876ebe4..0db9ba656abc 100644
--- a/arch/x86/include/asm/tlbflush.h
+++ b/arch/x86/include/asm/tlbflush.h
@@ -319,7 +319,7 @@ extern void flush_tlb_mm_range(struct mm_struct *mm, unsigned long start,
 				bool freed_tables);
 extern void flush_tlb_kernel_range(unsigned long start, unsigned long end);
 
-static inline void flush_tlb_page(struct vm_area_struct *vma, unsigned long a)
+static inline void flush_tlb_page(struct mm_area *vma, unsigned long a)
 {
 	flush_tlb_mm_range(vma->vm_mm, a, a + PAGE_SIZE, PAGE_SHIFT, false);
 }
diff --git a/arch/x86/kernel/cpu/resctrl/pseudo_lock.c b/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
index 92ea1472bde9..a223490e1042 100644
--- a/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
+++ b/arch/x86/kernel/cpu/resctrl/pseudo_lock.c
@@ -1484,7 +1484,7 @@ static int pseudo_lock_dev_release(struct inode *inode, struct file *filp)
 	return 0;
 }
 
-static int pseudo_lock_dev_mremap(struct vm_area_struct *area)
+static int pseudo_lock_dev_mremap(struct mm_area *area)
 {
 	/* Not supported */
 	return -EINVAL;
@@ -1494,7 +1494,7 @@ static const struct vm_operations_struct pseudo_mmap_ops = {
 	.mremap = pseudo_lock_dev_mremap,
 };
 
-static int pseudo_lock_dev_mmap(struct file *filp, struct vm_area_struct *vma)
+static int pseudo_lock_dev_mmap(struct file *filp, struct mm_area *vma)
 {
 	unsigned long vsize = vma->vm_end - vma->vm_start;
 	unsigned long off = vma->vm_pgoff << PAGE_SHIFT;
diff --git a/arch/x86/kernel/cpu/sgx/driver.c b/arch/x86/kernel/cpu/sgx/driver.c
index 7f8d1e11dbee..e7e41b05b5c8 100644
--- a/arch/x86/kernel/cpu/sgx/driver.c
+++ b/arch/x86/kernel/cpu/sgx/driver.c
@@ -81,7 +81,7 @@ static int sgx_release(struct inode *inode, struct file *file)
 	return 0;
 }
 
-static int sgx_mmap(struct file *file, struct vm_area_struct *vma)
+static int sgx_mmap(struct file *file, struct mm_area *vma)
 {
 	struct sgx_encl *encl = file->private_data;
 	int ret;
diff --git a/arch/x86/kernel/cpu/sgx/encl.c b/arch/x86/kernel/cpu/sgx/encl.c
index 279148e72459..8455a87e56f2 100644
--- a/arch/x86/kernel/cpu/sgx/encl.c
+++ b/arch/x86/kernel/cpu/sgx/encl.c
@@ -324,7 +324,7 @@ struct sgx_encl_page *sgx_encl_load_page(struct sgx_encl *encl,
  * Returns: Appropriate vm_fault_t: VM_FAULT_NOPAGE when PTE was installed
  * successfully, VM_FAULT_SIGBUS or VM_FAULT_OOM as error otherwise.
  */
-static vm_fault_t sgx_encl_eaug_page(struct vm_area_struct *vma,
+static vm_fault_t sgx_encl_eaug_page(struct mm_area *vma,
 				     struct sgx_encl *encl, unsigned long addr)
 {
 	vm_fault_t vmret = VM_FAULT_SIGBUS;
@@ -430,7 +430,7 @@ static vm_fault_t sgx_encl_eaug_page(struct vm_area_struct *vma,
 static vm_fault_t sgx_vma_fault(struct vm_fault *vmf)
 {
 	unsigned long addr = (unsigned long)vmf->address;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct sgx_encl_page *entry;
 	unsigned long phys_addr;
 	struct sgx_encl *encl;
@@ -484,7 +484,7 @@ static vm_fault_t sgx_vma_fault(struct vm_fault *vmf)
 	return VM_FAULT_NOPAGE;
 }
 
-static void sgx_vma_open(struct vm_area_struct *vma)
+static void sgx_vma_open(struct mm_area *vma)
 {
 	struct sgx_encl *encl = vma->vm_private_data;
 
@@ -567,7 +567,7 @@ int sgx_encl_may_map(struct sgx_encl *encl, unsigned long start,
 	return ret;
 }
 
-static int sgx_vma_mprotect(struct vm_area_struct *vma, unsigned long start,
+static int sgx_vma_mprotect(struct mm_area *vma, unsigned long start,
 			    unsigned long end, unsigned long newflags)
 {
 	return sgx_encl_may_map(vma->vm_private_data, start, end, newflags);
@@ -625,7 +625,7 @@ static struct sgx_encl_page *sgx_encl_reserve_page(struct sgx_encl *encl,
 	return entry;
 }
 
-static int sgx_vma_access(struct vm_area_struct *vma, unsigned long addr,
+static int sgx_vma_access(struct mm_area *vma, unsigned long addr,
 			  void *buf, int len, int write)
 {
 	struct sgx_encl *encl = vma->vm_private_data;
@@ -1137,7 +1137,7 @@ int sgx_encl_test_and_clear_young(struct mm_struct *mm,
 {
 	unsigned long addr = page->desc & PAGE_MASK;
 	struct sgx_encl *encl = page->encl;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int ret;
 
 	ret = sgx_encl_find(mm, addr, &vma);
@@ -1200,7 +1200,7 @@ void sgx_zap_enclave_ptes(struct sgx_encl *encl, unsigned long addr)
 {
 	unsigned long mm_list_version;
 	struct sgx_encl_mm *encl_mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int idx, ret;
 
 	do {
diff --git a/arch/x86/kernel/cpu/sgx/encl.h b/arch/x86/kernel/cpu/sgx/encl.h
index f94ff14c9486..de567cd442bc 100644
--- a/arch/x86/kernel/cpu/sgx/encl.h
+++ b/arch/x86/kernel/cpu/sgx/encl.h
@@ -87,9 +87,9 @@ struct sgx_backing {
 extern const struct vm_operations_struct sgx_vm_ops;
 
 static inline int sgx_encl_find(struct mm_struct *mm, unsigned long addr,
-				struct vm_area_struct **vma)
+				struct mm_area **vma)
 {
-	struct vm_area_struct *result;
+	struct mm_area *result;
 
 	result = vma_lookup(mm, addr);
 	if (!result || result->vm_ops != &sgx_vm_ops)
diff --git a/arch/x86/kernel/cpu/sgx/ioctl.c b/arch/x86/kernel/cpu/sgx/ioctl.c
index 776a20172867..b25b51724b3a 100644
--- a/arch/x86/kernel/cpu/sgx/ioctl.c
+++ b/arch/x86/kernel/cpu/sgx/ioctl.c
@@ -209,7 +209,7 @@ static int __sgx_encl_add_page(struct sgx_encl *encl,
 			       struct sgx_secinfo *secinfo, unsigned long src)
 {
 	struct sgx_pageinfo pginfo;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct page *src_page;
 	int ret;
 
diff --git a/arch/x86/kernel/cpu/sgx/virt.c b/arch/x86/kernel/cpu/sgx/virt.c
index 7aaa3652e31d..a601d9e1d867 100644
--- a/arch/x86/kernel/cpu/sgx/virt.c
+++ b/arch/x86/kernel/cpu/sgx/virt.c
@@ -31,7 +31,7 @@ static struct mutex zombie_secs_pages_lock;
 static struct list_head zombie_secs_pages;
 
 static int __sgx_vepc_fault(struct sgx_vepc *vepc,
-			    struct vm_area_struct *vma, unsigned long addr)
+			    struct mm_area *vma, unsigned long addr)
 {
 	struct sgx_epc_page *epc_page;
 	unsigned long index, pfn;
@@ -73,7 +73,7 @@ static int __sgx_vepc_fault(struct sgx_vepc *vepc,
 
 static vm_fault_t sgx_vepc_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct sgx_vepc *vepc = vma->vm_private_data;
 	int ret;
 
@@ -96,7 +96,7 @@ static const struct vm_operations_struct sgx_vepc_vm_ops = {
 	.fault = sgx_vepc_fault,
 };
 
-static int sgx_vepc_mmap(struct file *file, struct vm_area_struct *vma)
+static int sgx_vepc_mmap(struct file *file, struct mm_area *vma)
 {
 	struct sgx_vepc *vepc = file->private_data;
 
diff --git a/arch/x86/kernel/shstk.c b/arch/x86/kernel/shstk.c
index 059685612362..f18dd5e2beff 100644
--- a/arch/x86/kernel/shstk.c
+++ b/arch/x86/kernel/shstk.c
@@ -294,7 +294,7 @@ static int shstk_push_sigframe(unsigned long *ssp)
 
 static int shstk_pop_sigframe(unsigned long *ssp)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long token_addr;
 	bool need_to_check_vma;
 	int err = 1;
diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c
index 776ae6fa7f2d..ab965bc812a7 100644
--- a/arch/x86/kernel/sys_x86_64.c
+++ b/arch/x86/kernel/sys_x86_64.c
@@ -128,7 +128,7 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr, unsigned long len,
 		       unsigned long pgoff, unsigned long flags, vm_flags_t vm_flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct vm_unmapped_area_info info = {};
 	unsigned long begin, end;
 
@@ -168,7 +168,7 @@ arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr0,
 			  unsigned long len, unsigned long pgoff,
 			  unsigned long flags, vm_flags_t vm_flags)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm = current->mm;
 	unsigned long addr = addr0;
 	struct vm_unmapped_area_info info = {};
diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
index 296d294142c8..9255779b17f4 100644
--- a/arch/x86/mm/fault.c
+++ b/arch/x86/mm/fault.c
@@ -836,7 +836,7 @@ bad_area_nosemaphore(struct pt_regs *regs, unsigned long error_code,
 static void
 __bad_area(struct pt_regs *regs, unsigned long error_code,
 	   unsigned long address, struct mm_struct *mm,
-	   struct vm_area_struct *vma, u32 pkey, int si_code)
+	   struct mm_area *vma, u32 pkey, int si_code)
 {
 	/*
 	 * Something tried to access memory that isn't in our memory map..
@@ -851,7 +851,7 @@ __bad_area(struct pt_regs *regs, unsigned long error_code,
 }
 
 static inline bool bad_area_access_from_pkeys(unsigned long error_code,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	/* This code is always called on the current mm */
 	bool foreign = false;
@@ -870,7 +870,7 @@ static inline bool bad_area_access_from_pkeys(unsigned long error_code,
 static noinline void
 bad_area_access_error(struct pt_regs *regs, unsigned long error_code,
 		      unsigned long address, struct mm_struct *mm,
-		      struct vm_area_struct *vma)
+		      struct mm_area *vma)
 {
 	/*
 	 * This OSPKE check is not strictly necessary at runtime.
@@ -1049,7 +1049,7 @@ NOKPROBE_SYMBOL(spurious_kernel_fault);
 int show_unhandled_signals = 1;
 
 static inline int
-access_error(unsigned long error_code, struct vm_area_struct *vma)
+access_error(unsigned long error_code, struct mm_area *vma)
 {
 	/* This is only called for the current mm, so: */
 	bool foreign = false;
@@ -1211,7 +1211,7 @@ void do_user_addr_fault(struct pt_regs *regs,
 			unsigned long error_code,
 			unsigned long address)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct task_struct *tsk;
 	struct mm_struct *mm;
 	vm_fault_t fault;
diff --git a/arch/x86/mm/pat/memtype.c b/arch/x86/mm/pat/memtype.c
index 72d8cbc61158..f301b40be91b 100644
--- a/arch/x86/mm/pat/memtype.c
+++ b/arch/x86/mm/pat/memtype.c
@@ -932,7 +932,7 @@ static void free_pfn_range(u64 paddr, unsigned long size)
 		memtype_free(paddr, paddr + size);
 }
 
-static int follow_phys(struct vm_area_struct *vma, unsigned long *prot,
+static int follow_phys(struct mm_area *vma, unsigned long *prot,
 		resource_size_t *phys)
 {
 	struct follow_pfnmap_args args = { .vma = vma, .address = vma->vm_start };
@@ -952,7 +952,7 @@ static int follow_phys(struct vm_area_struct *vma, unsigned long *prot,
 	return 0;
 }
 
-static int get_pat_info(struct vm_area_struct *vma, resource_size_t *paddr,
+static int get_pat_info(struct mm_area *vma, resource_size_t *paddr,
 		pgprot_t *pgprot)
 {
 	unsigned long prot;
@@ -984,8 +984,8 @@ static int get_pat_info(struct vm_area_struct *vma, resource_size_t *paddr,
 	return -EINVAL;
 }
 
-int track_pfn_copy(struct vm_area_struct *dst_vma,
-		struct vm_area_struct *src_vma, unsigned long *pfn)
+int track_pfn_copy(struct mm_area *dst_vma,
+		struct mm_area *src_vma, unsigned long *pfn)
 {
 	const unsigned long vma_size = src_vma->vm_end - src_vma->vm_start;
 	resource_size_t paddr;
@@ -1011,7 +1011,7 @@ int track_pfn_copy(struct vm_area_struct *dst_vma,
 	return 0;
 }
 
-void untrack_pfn_copy(struct vm_area_struct *dst_vma, unsigned long pfn)
+void untrack_pfn_copy(struct mm_area *dst_vma, unsigned long pfn)
 {
 	untrack_pfn(dst_vma, pfn, dst_vma->vm_end - dst_vma->vm_start, true);
 	/*
@@ -1026,7 +1026,7 @@ void untrack_pfn_copy(struct vm_area_struct *dst_vma, unsigned long pfn)
  * reserve the entire pfn + size range with single reserve_pfn_range
  * call.
  */
-int track_pfn_remap(struct vm_area_struct *vma, pgprot_t *prot,
+int track_pfn_remap(struct mm_area *vma, pgprot_t *prot,
 		    unsigned long pfn, unsigned long addr, unsigned long size)
 {
 	resource_size_t paddr = (resource_size_t)pfn << PAGE_SHIFT;
@@ -1066,7 +1066,7 @@ int track_pfn_remap(struct vm_area_struct *vma, pgprot_t *prot,
 	return 0;
 }
 
-void track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot, pfn_t pfn)
+void track_pfn_insert(struct mm_area *vma, pgprot_t *prot, pfn_t pfn)
 {
 	enum page_cache_mode pcm;
 
@@ -1084,7 +1084,7 @@ void track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot, pfn_t pfn)
  * untrack can be called for a specific region indicated by pfn and size or
  * can be for the entire vma (in which case pfn, size are zero).
  */
-void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
+void untrack_pfn(struct mm_area *vma, unsigned long pfn,
 		 unsigned long size, bool mm_wr_locked)
 {
 	resource_size_t paddr;
@@ -1108,7 +1108,7 @@ void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
 	}
 }
 
-void untrack_pfn_clear(struct vm_area_struct *vma)
+void untrack_pfn_clear(struct mm_area *vma)
 {
 	vm_flags_clear(vma, VM_PAT);
 }
diff --git a/arch/x86/mm/pgtable.c b/arch/x86/mm/pgtable.c
index a05fcddfc811..c0105e8b5130 100644
--- a/arch/x86/mm/pgtable.c
+++ b/arch/x86/mm/pgtable.c
@@ -458,7 +458,7 @@ void pgd_free(struct mm_struct *mm, pgd_t *pgd)
  * to also make the pte writeable at the same time the dirty bit is
  * set. In that case we do actually need to write the PTE.
  */
-int ptep_set_access_flags(struct vm_area_struct *vma,
+int ptep_set_access_flags(struct mm_area *vma,
 			  unsigned long address, pte_t *ptep,
 			  pte_t entry, int dirty)
 {
@@ -471,7 +471,7 @@ int ptep_set_access_flags(struct vm_area_struct *vma,
 }
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-int pmdp_set_access_flags(struct vm_area_struct *vma,
+int pmdp_set_access_flags(struct mm_area *vma,
 			  unsigned long address, pmd_t *pmdp,
 			  pmd_t entry, int dirty)
 {
@@ -492,7 +492,7 @@ int pmdp_set_access_flags(struct vm_area_struct *vma,
 	return changed;
 }
 
-int pudp_set_access_flags(struct vm_area_struct *vma, unsigned long address,
+int pudp_set_access_flags(struct mm_area *vma, unsigned long address,
 			  pud_t *pudp, pud_t entry, int dirty)
 {
 	int changed = !pud_same(*pudp, entry);
@@ -513,7 +513,7 @@ int pudp_set_access_flags(struct vm_area_struct *vma, unsigned long address,
 }
 #endif
 
-int ptep_test_and_clear_young(struct vm_area_struct *vma,
+int ptep_test_and_clear_young(struct mm_area *vma,
 			      unsigned long addr, pte_t *ptep)
 {
 	int ret = 0;
@@ -526,7 +526,7 @@ int ptep_test_and_clear_young(struct vm_area_struct *vma,
 }
 
 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG)
-int pmdp_test_and_clear_young(struct vm_area_struct *vma,
+int pmdp_test_and_clear_young(struct mm_area *vma,
 			      unsigned long addr, pmd_t *pmdp)
 {
 	int ret = 0;
@@ -540,7 +540,7 @@ int pmdp_test_and_clear_young(struct vm_area_struct *vma,
 #endif
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-int pudp_test_and_clear_young(struct vm_area_struct *vma,
+int pudp_test_and_clear_young(struct mm_area *vma,
 			      unsigned long addr, pud_t *pudp)
 {
 	int ret = 0;
@@ -553,7 +553,7 @@ int pudp_test_and_clear_young(struct vm_area_struct *vma,
 }
 #endif
 
-int ptep_clear_flush_young(struct vm_area_struct *vma,
+int ptep_clear_flush_young(struct mm_area *vma,
 			   unsigned long address, pte_t *ptep)
 {
 	/*
@@ -573,7 +573,7 @@ int ptep_clear_flush_young(struct vm_area_struct *vma,
 }
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-int pmdp_clear_flush_young(struct vm_area_struct *vma,
+int pmdp_clear_flush_young(struct mm_area *vma,
 			   unsigned long address, pmd_t *pmdp)
 {
 	int young;
@@ -587,7 +587,7 @@ int pmdp_clear_flush_young(struct vm_area_struct *vma,
 	return young;
 }
 
-pmd_t pmdp_invalidate_ad(struct vm_area_struct *vma, unsigned long address,
+pmd_t pmdp_invalidate_ad(struct mm_area *vma, unsigned long address,
 			 pmd_t *pmdp)
 {
 	VM_WARN_ON_ONCE(!pmd_present(*pmdp));
@@ -602,7 +602,7 @@ pmd_t pmdp_invalidate_ad(struct vm_area_struct *vma, unsigned long address,
 
 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && \
 	defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD)
-pud_t pudp_invalidate(struct vm_area_struct *vma, unsigned long address,
+pud_t pudp_invalidate(struct mm_area *vma, unsigned long address,
 		     pud_t *pudp)
 {
 	VM_WARN_ON_ONCE(!pud_present(*pudp));
@@ -858,7 +858,7 @@ int pmd_free_pte_page(pmd_t *pmd, unsigned long addr)
 #endif /* CONFIG_X86_64 */
 #endif	/* CONFIG_HAVE_ARCH_HUGE_VMAP */
 
-pte_t pte_mkwrite(pte_t pte, struct vm_area_struct *vma)
+pte_t pte_mkwrite(pte_t pte, struct mm_area *vma)
 {
 	if (vma->vm_flags & VM_SHADOW_STACK)
 		return pte_mkwrite_shstk(pte);
@@ -868,7 +868,7 @@ pte_t pte_mkwrite(pte_t pte, struct vm_area_struct *vma)
 	return pte_clear_saveddirty(pte);
 }
 
-pmd_t pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma)
+pmd_t pmd_mkwrite(pmd_t pmd, struct mm_area *vma)
 {
 	if (vma->vm_flags & VM_SHADOW_STACK)
 		return pmd_mkwrite_shstk(pmd);
@@ -878,7 +878,7 @@ pmd_t pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma)
 	return pmd_clear_saveddirty(pmd);
 }
 
-void arch_check_zapped_pte(struct vm_area_struct *vma, pte_t pte)
+void arch_check_zapped_pte(struct mm_area *vma, pte_t pte)
 {
 	/*
 	 * Hardware before shadow stack can (rarely) set Dirty=1
@@ -891,14 +891,14 @@ void arch_check_zapped_pte(struct vm_area_struct *vma, pte_t pte)
 			pte_shstk(pte));
 }
 
-void arch_check_zapped_pmd(struct vm_area_struct *vma, pmd_t pmd)
+void arch_check_zapped_pmd(struct mm_area *vma, pmd_t pmd)
 {
 	/* See note in arch_check_zapped_pte() */
 	VM_WARN_ON_ONCE(!(vma->vm_flags & VM_SHADOW_STACK) &&
 			pmd_shstk(pmd));
 }
 
-void arch_check_zapped_pud(struct vm_area_struct *vma, pud_t pud)
+void arch_check_zapped_pud(struct mm_area *vma, pud_t pud)
 {
 	/* See note in arch_check_zapped_pte() */
 	VM_WARN_ON_ONCE(!(vma->vm_flags & VM_SHADOW_STACK) && pud_shstk(pud));
diff --git a/arch/x86/mm/pkeys.c b/arch/x86/mm/pkeys.c
index 7418c367e328..8626515f8331 100644
--- a/arch/x86/mm/pkeys.c
+++ b/arch/x86/mm/pkeys.c
@@ -59,7 +59,7 @@ int __execute_only_pkey(struct mm_struct *mm)
 	return execute_only_pkey;
 }
 
-static inline bool vma_is_pkey_exec_only(struct vm_area_struct *vma)
+static inline bool vma_is_pkey_exec_only(struct mm_area *vma)
 {
 	/* Do this check first since the vm_flags should be hot */
 	if ((vma->vm_flags & VM_ACCESS_FLAGS) != VM_EXEC)
@@ -73,7 +73,7 @@ static inline bool vma_is_pkey_exec_only(struct vm_area_struct *vma)
 /*
  * This is only called for *plain* mprotect calls.
  */
-int __arch_override_mprotect_pkey(struct vm_area_struct *vma, int prot, int pkey)
+int __arch_override_mprotect_pkey(struct mm_area *vma, int prot, int pkey)
 {
 	/*
 	 * Is this an mprotect_pkey() call?  If so, never
diff --git a/arch/x86/um/mem_32.c b/arch/x86/um/mem_32.c
index 29b2203bc82c..495b032f68f5 100644
--- a/arch/x86/um/mem_32.c
+++ b/arch/x86/um/mem_32.c
@@ -6,7 +6,7 @@
 #include <linux/mm.h>
 #include <asm/elf.h>
 
-static struct vm_area_struct gate_vma;
+static struct mm_area gate_vma;
 
 static int __init gate_vma_init(void)
 {
@@ -23,7 +23,7 @@ static int __init gate_vma_init(void)
 }
 __initcall(gate_vma_init);
 
-struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
+struct mm_area *get_gate_vma(struct mm_struct *mm)
 {
 	return FIXADDR_USER_START ? &gate_vma : NULL;
 }
@@ -41,7 +41,7 @@ int in_gate_area_no_mm(unsigned long addr)
 
 int in_gate_area(struct mm_struct *mm, unsigned long addr)
 {
-	struct vm_area_struct *vma = get_gate_vma(mm);
+	struct mm_area *vma = get_gate_vma(mm);
 
 	if (!vma)
 		return 0;
diff --git a/arch/x86/um/mem_64.c b/arch/x86/um/mem_64.c
index c027e93d1002..5fd2a34ebe23 100644
--- a/arch/x86/um/mem_64.c
+++ b/arch/x86/um/mem_64.c
@@ -2,7 +2,7 @@
 #include <linux/mm.h>
 #include <asm/elf.h>
 
-const char *arch_vma_name(struct vm_area_struct *vma)
+const char *arch_vma_name(struct mm_area *vma)
 {
 	if (vma->vm_mm && vma->vm_start == um_vdso_addr)
 		return "[vdso]";
diff --git a/arch/x86/um/vdso/vma.c b/arch/x86/um/vdso/vma.c
index dc8dfb2abd80..2f80bb140815 100644
--- a/arch/x86/um/vdso/vma.c
+++ b/arch/x86/um/vdso/vma.c
@@ -41,7 +41,7 @@ subsys_initcall(init_vdso);
 
 int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm = current->mm;
 	static struct vm_special_mapping vdso_mapping = {
 		.name = "[vdso]",
diff --git a/arch/x86/xen/mmu.c b/arch/x86/xen/mmu.c
index c4c479373249..c268d7d323ab 100644
--- a/arch/x86/xen/mmu.c
+++ b/arch/x86/xen/mmu.c
@@ -38,7 +38,7 @@ xmaddr_t arbitrary_virt_to_machine(void *vaddr)
 EXPORT_SYMBOL_GPL(arbitrary_virt_to_machine);
 
 /* Returns: 0 success */
-int xen_unmap_domain_gfn_range(struct vm_area_struct *vma,
+int xen_unmap_domain_gfn_range(struct mm_area *vma,
 			       int nr, struct page **pages)
 {
 	if (xen_feature(XENFEAT_auto_translated_physmap))
diff --git a/arch/x86/xen/mmu_pv.c b/arch/x86/xen/mmu_pv.c
index 38971c6dcd4b..ddb7a5dcce88 100644
--- a/arch/x86/xen/mmu_pv.c
+++ b/arch/x86/xen/mmu_pv.c
@@ -348,7 +348,7 @@ static void xen_set_pte(pte_t *ptep, pte_t pteval)
 	__xen_set_pte(ptep, pteval);
 }
 
-static pte_t xen_ptep_modify_prot_start(struct vm_area_struct *vma,
+static pte_t xen_ptep_modify_prot_start(struct mm_area *vma,
 					unsigned long addr, pte_t *ptep)
 {
 	/* Just return the pte as-is.  We preserve the bits on commit */
@@ -356,7 +356,7 @@ static pte_t xen_ptep_modify_prot_start(struct vm_area_struct *vma,
 	return *ptep;
 }
 
-static void xen_ptep_modify_prot_commit(struct vm_area_struct *vma,
+static void xen_ptep_modify_prot_commit(struct mm_area *vma,
 					unsigned long addr,
 					pte_t *ptep, pte_t pte)
 {
@@ -2494,7 +2494,7 @@ static int remap_area_pfn_pte_fn(pte_t *ptep, unsigned long addr, void *data)
 	return 0;
 }
 
-int xen_remap_pfn(struct vm_area_struct *vma, unsigned long addr,
+int xen_remap_pfn(struct mm_area *vma, unsigned long addr,
 		  xen_pfn_t *pfn, int nr, int *err_ptr, pgprot_t prot,
 		  unsigned int domid, bool no_translate)
 {
diff --git a/arch/xtensa/include/asm/cacheflush.h b/arch/xtensa/include/asm/cacheflush.h
index a2b6bb5429f5..6d4a401875c2 100644
--- a/arch/xtensa/include/asm/cacheflush.h
+++ b/arch/xtensa/include/asm/cacheflush.h
@@ -96,9 +96,9 @@ static inline void __invalidate_icache_page_alias(unsigned long virt,
 
 #ifdef CONFIG_SMP
 void flush_cache_all(void);
-void flush_cache_range(struct vm_area_struct*, ulong, ulong);
+void flush_cache_range(struct mm_area*, ulong, ulong);
 void flush_icache_range(unsigned long start, unsigned long end);
-void flush_cache_page(struct vm_area_struct*,
+void flush_cache_page(struct mm_area*,
 			     unsigned long, unsigned long);
 #define flush_cache_all flush_cache_all
 #define flush_cache_range flush_cache_range
@@ -133,9 +133,9 @@ static inline void flush_dcache_page(struct page *page)
 	flush_dcache_folio(page_folio(page));
 }
 
-void local_flush_cache_range(struct vm_area_struct *vma,
+void local_flush_cache_range(struct mm_area *vma,
 		unsigned long start, unsigned long end);
-void local_flush_cache_page(struct vm_area_struct *vma,
+void local_flush_cache_page(struct mm_area *vma,
 		unsigned long address, unsigned long pfn);
 
 #else
@@ -155,9 +155,9 @@ void local_flush_cache_page(struct vm_area_struct *vma,
 
 #if defined(CONFIG_MMU) && (DCACHE_WAY_SIZE > PAGE_SIZE)
 
-extern void copy_to_user_page(struct vm_area_struct*, struct page*,
+extern void copy_to_user_page(struct mm_area*, struct page*,
 		unsigned long, void*, const void*, unsigned long);
-extern void copy_from_user_page(struct vm_area_struct*, struct page*,
+extern void copy_from_user_page(struct mm_area*, struct page*,
 		unsigned long, void*, const void*, unsigned long);
 #define copy_to_user_page copy_to_user_page
 #define copy_from_user_page copy_from_user_page
diff --git a/arch/xtensa/include/asm/page.h b/arch/xtensa/include/asm/page.h
index 644413792bf3..47df5872733a 100644
--- a/arch/xtensa/include/asm/page.h
+++ b/arch/xtensa/include/asm/page.h
@@ -106,7 +106,7 @@ typedef struct page *pgtable_t;
 # include <asm-generic/getorder.h>
 
 struct page;
-struct vm_area_struct;
+struct mm_area;
 extern void clear_page(void *page);
 extern void copy_page(void *to, void *from);
 
@@ -124,7 +124,7 @@ extern void copy_page_alias(void *to, void *from,
 void clear_user_highpage(struct page *page, unsigned long vaddr);
 #define __HAVE_ARCH_COPY_USER_HIGHPAGE
 void copy_user_highpage(struct page *to, struct page *from,
-			unsigned long vaddr, struct vm_area_struct *vma);
+			unsigned long vaddr, struct mm_area *vma);
 #else
 # define clear_user_page(page, vaddr, pg)	clear_page(page)
 # define copy_user_page(to, from, vaddr, pg)	copy_page(to, from)
diff --git a/arch/xtensa/include/asm/pgtable.h b/arch/xtensa/include/asm/pgtable.h
index 1647a7cc3fbf..247b9d7b91b4 100644
--- a/arch/xtensa/include/asm/pgtable.h
+++ b/arch/xtensa/include/asm/pgtable.h
@@ -313,10 +313,10 @@ set_pmd(pmd_t *pmdp, pmd_t pmdval)
 	*pmdp = pmdval;
 }
 
-struct vm_area_struct;
+struct mm_area;
 
 static inline int
-ptep_test_and_clear_young(struct vm_area_struct *vma, unsigned long addr,
+ptep_test_and_clear_young(struct mm_area *vma, unsigned long addr,
 			  pte_t *ptep)
 {
 	pte_t pte = *ptep;
@@ -403,14 +403,14 @@ static inline pte_t pte_swp_clear_exclusive(pte_t pte)
 #else
 
 struct vm_fault;
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long address, pte_t *ptep, unsigned int nr);
 #define update_mmu_cache(vma, address, ptep) \
 	update_mmu_cache_range(NULL, vma, address, ptep, 1)
 
 typedef pte_t *pte_addr_t;
 
-void update_mmu_tlb_range(struct vm_area_struct *vma,
+void update_mmu_tlb_range(struct mm_area *vma,
 		unsigned long address, pte_t *ptep, unsigned int nr);
 #define update_mmu_tlb_range update_mmu_tlb_range
 
diff --git a/arch/xtensa/include/asm/tlbflush.h b/arch/xtensa/include/asm/tlbflush.h
index 573df8cea200..36a5ca4f41b8 100644
--- a/arch/xtensa/include/asm/tlbflush.h
+++ b/arch/xtensa/include/asm/tlbflush.h
@@ -32,9 +32,9 @@
 
 void local_flush_tlb_all(void);
 void local_flush_tlb_mm(struct mm_struct *mm);
-void local_flush_tlb_page(struct vm_area_struct *vma,
+void local_flush_tlb_page(struct mm_area *vma,
 		unsigned long page);
-void local_flush_tlb_range(struct vm_area_struct *vma,
+void local_flush_tlb_range(struct mm_area *vma,
 		unsigned long start, unsigned long end);
 void local_flush_tlb_kernel_range(unsigned long start, unsigned long end);
 
@@ -42,8 +42,8 @@ void local_flush_tlb_kernel_range(unsigned long start, unsigned long end);
 
 void flush_tlb_all(void);
 void flush_tlb_mm(struct mm_struct *);
-void flush_tlb_page(struct vm_area_struct *, unsigned long);
-void flush_tlb_range(struct vm_area_struct *, unsigned long,
+void flush_tlb_page(struct mm_area *, unsigned long);
+void flush_tlb_range(struct mm_area *, unsigned long,
 		unsigned long);
 void flush_tlb_kernel_range(unsigned long start, unsigned long end);
 
diff --git a/arch/xtensa/kernel/pci.c b/arch/xtensa/kernel/pci.c
index 62c900e400d6..81f6d62f9bff 100644
--- a/arch/xtensa/kernel/pci.c
+++ b/arch/xtensa/kernel/pci.c
@@ -71,7 +71,7 @@ void pcibios_fixup_bus(struct pci_bus *bus)
  *  -- paulus.
  */
 
-int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct vm_area_struct *vma)
+int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct mm_area *vma)
 {
 	struct pci_controller *pci_ctrl = (struct pci_controller*) pdev->sysdata;
 	resource_size_t ioaddr = pci_resource_start(pdev, bar);
diff --git a/arch/xtensa/kernel/smp.c b/arch/xtensa/kernel/smp.c
index 94a23f100726..66c0c20799ef 100644
--- a/arch/xtensa/kernel/smp.c
+++ b/arch/xtensa/kernel/smp.c
@@ -468,7 +468,7 @@ int setup_profiling_timer(unsigned int multiplier)
 /* TLB flush functions */
 
 struct flush_data {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr1;
 	unsigned long addr2;
 };
@@ -499,7 +499,7 @@ static void ipi_flush_tlb_page(void *arg)
 	local_flush_tlb_page(fd->vma, fd->addr1);
 }
 
-void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr)
+void flush_tlb_page(struct mm_area *vma, unsigned long addr)
 {
 	struct flush_data fd = {
 		.vma = vma,
@@ -514,7 +514,7 @@ static void ipi_flush_tlb_range(void *arg)
 	local_flush_tlb_range(fd->vma, fd->addr1, fd->addr2);
 }
 
-void flush_tlb_range(struct vm_area_struct *vma,
+void flush_tlb_range(struct mm_area *vma,
 		     unsigned long start, unsigned long end)
 {
 	struct flush_data fd = {
@@ -558,7 +558,7 @@ static void ipi_flush_cache_page(void *arg)
 	local_flush_cache_page(fd->vma, fd->addr1, fd->addr2);
 }
 
-void flush_cache_page(struct vm_area_struct *vma,
+void flush_cache_page(struct mm_area *vma,
 		     unsigned long address, unsigned long pfn)
 {
 	struct flush_data fd = {
@@ -575,7 +575,7 @@ static void ipi_flush_cache_range(void *arg)
 	local_flush_cache_range(fd->vma, fd->addr1, fd->addr2);
 }
 
-void flush_cache_range(struct vm_area_struct *vma,
+void flush_cache_range(struct mm_area *vma,
 		     unsigned long start, unsigned long end)
 {
 	struct flush_data fd = {
diff --git a/arch/xtensa/kernel/syscall.c b/arch/xtensa/kernel/syscall.c
index dc54f854c2f5..9dd4ee487337 100644
--- a/arch/xtensa/kernel/syscall.c
+++ b/arch/xtensa/kernel/syscall.c
@@ -58,7 +58,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr,
 		unsigned long len, unsigned long pgoff, unsigned long flags,
 		vm_flags_t vm_flags)
 {
-	struct vm_area_struct *vmm;
+	struct mm_area *vmm;
 	struct vma_iterator vmi;
 
 	if (flags & MAP_FIXED) {
diff --git a/arch/xtensa/mm/cache.c b/arch/xtensa/mm/cache.c
index 23be0e7516ce..b1f503c39d58 100644
--- a/arch/xtensa/mm/cache.c
+++ b/arch/xtensa/mm/cache.c
@@ -100,7 +100,7 @@ void clear_user_highpage(struct page *page, unsigned long vaddr)
 EXPORT_SYMBOL(clear_user_highpage);
 
 void copy_user_highpage(struct page *dst, struct page *src,
-			unsigned long vaddr, struct vm_area_struct *vma)
+			unsigned long vaddr, struct mm_area *vma)
 {
 	struct folio *folio = page_folio(dst);
 	unsigned long dst_paddr, src_paddr;
@@ -181,7 +181,7 @@ EXPORT_SYMBOL(flush_dcache_folio);
  * For now, flush the whole cache. FIXME??
  */
 
-void local_flush_cache_range(struct vm_area_struct *vma,
+void local_flush_cache_range(struct mm_area *vma,
 		       unsigned long start, unsigned long end)
 {
 	__flush_invalidate_dcache_all();
@@ -196,7 +196,7 @@ EXPORT_SYMBOL(local_flush_cache_range);
  * alias versions of the cache flush functions.
  */
 
-void local_flush_cache_page(struct vm_area_struct *vma, unsigned long address,
+void local_flush_cache_page(struct mm_area *vma, unsigned long address,
 		      unsigned long pfn)
 {
 	/* Note that we have to use the 'alias' address to avoid multi-hit */
@@ -213,7 +213,7 @@ EXPORT_SYMBOL(local_flush_cache_page);
 
 #endif /* DCACHE_WAY_SIZE > PAGE_SIZE */
 
-void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
+void update_mmu_cache_range(struct vm_fault *vmf, struct mm_area *vma,
 		unsigned long addr, pte_t *ptep, unsigned int nr)
 {
 	unsigned long pfn = pte_pfn(*ptep);
@@ -270,7 +270,7 @@ void update_mmu_cache_range(struct vm_fault *vmf, struct vm_area_struct *vma,
 
 #if (DCACHE_WAY_SIZE > PAGE_SIZE)
 
-void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
+void copy_to_user_page(struct mm_area *vma, struct page *page,
 		unsigned long vaddr, void *dst, const void *src,
 		unsigned long len)
 {
@@ -310,7 +310,7 @@ void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
 	}
 }
 
-extern void copy_from_user_page(struct vm_area_struct *vma, struct page *page,
+extern void copy_from_user_page(struct mm_area *vma, struct page *page,
 		unsigned long vaddr, void *dst, const void *src,
 		unsigned long len)
 {
diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c
index 16e11b6f6f78..02d6bcea445d 100644
--- a/arch/xtensa/mm/fault.c
+++ b/arch/xtensa/mm/fault.c
@@ -87,7 +87,7 @@ static void vmalloc_fault(struct pt_regs *regs, unsigned int address)
 
 void do_page_fault(struct pt_regs *regs)
 {
-	struct vm_area_struct * vma;
+	struct mm_area * vma;
 	struct mm_struct *mm = current->mm;
 	unsigned int exccause = regs->exccause;
 	unsigned int address = regs->excvaddr;
diff --git a/arch/xtensa/mm/tlb.c b/arch/xtensa/mm/tlb.c
index 0a1a815dc796..b8fcadd0460a 100644
--- a/arch/xtensa/mm/tlb.c
+++ b/arch/xtensa/mm/tlb.c
@@ -86,7 +86,7 @@ void local_flush_tlb_mm(struct mm_struct *mm)
 # define _TLB_ENTRIES _DTLB_ENTRIES
 #endif
 
-void local_flush_tlb_range(struct vm_area_struct *vma,
+void local_flush_tlb_range(struct mm_area *vma,
 		unsigned long start, unsigned long end)
 {
 	int cpu = smp_processor_id();
@@ -124,7 +124,7 @@ void local_flush_tlb_range(struct vm_area_struct *vma,
 	local_irq_restore(flags);
 }
 
-void local_flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
+void local_flush_tlb_page(struct mm_area *vma, unsigned long page)
 {
 	int cpu = smp_processor_id();
 	struct mm_struct* mm = vma->vm_mm;
@@ -163,7 +163,7 @@ void local_flush_tlb_kernel_range(unsigned long start, unsigned long end)
 	}
 }
 
-void update_mmu_tlb_range(struct vm_area_struct *vma,
+void update_mmu_tlb_range(struct mm_area *vma,
 			unsigned long address, pte_t *ptep, unsigned int nr)
 {
 	local_flush_tlb_range(vma, address, address + PAGE_SIZE * nr);
diff --git a/block/fops.c b/block/fops.c
index be9f1dbea9ce..6b5d92baf4b6 100644
--- a/block/fops.c
+++ b/block/fops.c
@@ -871,7 +871,7 @@ static long blkdev_fallocate(struct file *file, int mode, loff_t start,
 	return error;
 }
 
-static int blkdev_mmap(struct file *file, struct vm_area_struct *vma)
+static int blkdev_mmap(struct file *file, struct mm_area *vma)
 {
 	struct inode *bd_inode = bdev_file_inode(file);
 
diff --git a/drivers/accel/amdxdna/amdxdna_gem.c b/drivers/accel/amdxdna/amdxdna_gem.c
index 606433d73236..10a1bd65acb0 100644
--- a/drivers/accel/amdxdna/amdxdna_gem.c
+++ b/drivers/accel/amdxdna/amdxdna_gem.c
@@ -159,7 +159,7 @@ static int amdxdna_hmm_register(struct amdxdna_gem_obj *abo, unsigned long addr,
 }
 
 static int amdxdna_gem_obj_mmap(struct drm_gem_object *gobj,
-				struct vm_area_struct *vma)
+				struct mm_area *vma)
 {
 	struct amdxdna_gem_obj *abo = to_xdna_obj(gobj);
 	unsigned long num_pages;
@@ -192,12 +192,12 @@ static vm_fault_t amdxdna_gem_vm_fault(struct vm_fault *vmf)
 	return drm_gem_shmem_vm_ops.fault(vmf);
 }
 
-static void amdxdna_gem_vm_open(struct vm_area_struct *vma)
+static void amdxdna_gem_vm_open(struct mm_area *vma)
 {
 	drm_gem_shmem_vm_ops.open(vma);
 }
 
-static void amdxdna_gem_vm_close(struct vm_area_struct *vma)
+static void amdxdna_gem_vm_close(struct mm_area *vma)
 {
 	struct drm_gem_object *gobj = vma->vm_private_data;
 
diff --git a/drivers/accel/habanalabs/common/command_buffer.c b/drivers/accel/habanalabs/common/command_buffer.c
index 0f0d295116e7..6dab3015eb48 100644
--- a/drivers/accel/habanalabs/common/command_buffer.c
+++ b/drivers/accel/habanalabs/common/command_buffer.c
@@ -247,7 +247,7 @@ static int hl_cb_mmap_mem_alloc(struct hl_mmap_mem_buf *buf, gfp_t gfp, void *ar
 }
 
 static int hl_cb_mmap(struct hl_mmap_mem_buf *buf,
-				      struct vm_area_struct *vma, void *args)
+				      struct mm_area *vma, void *args)
 {
 	struct hl_cb *cb = buf->private;
 
diff --git a/drivers/accel/habanalabs/common/device.c b/drivers/accel/habanalabs/common/device.c
index 68eebed3b050..b86d048f3954 100644
--- a/drivers/accel/habanalabs/common/device.c
+++ b/drivers/accel/habanalabs/common/device.c
@@ -647,7 +647,7 @@ static int hl_device_release_ctrl(struct inode *inode, struct file *filp)
 	return 0;
 }
 
-static int __hl_mmap(struct hl_fpriv *hpriv, struct vm_area_struct *vma)
+static int __hl_mmap(struct hl_fpriv *hpriv, struct mm_area *vma)
 {
 	struct hl_device *hdev = hpriv->hdev;
 	unsigned long vm_pgoff;
@@ -675,12 +675,12 @@ static int __hl_mmap(struct hl_fpriv *hpriv, struct vm_area_struct *vma)
  * hl_mmap - mmap function for habanalabs device
  *
  * @*filp: pointer to file structure
- * @*vma: pointer to vm_area_struct of the process
+ * @*vma: pointer to mm_area of the process
  *
  * Called when process does an mmap on habanalabs device. Call the relevant mmap
  * function at the end of the common code.
  */
-int hl_mmap(struct file *filp, struct vm_area_struct *vma)
+int hl_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct drm_file *file_priv = filp->private_data;
 	struct hl_fpriv *hpriv = file_priv->driver_priv;
diff --git a/drivers/accel/habanalabs/common/habanalabs.h b/drivers/accel/habanalabs/common/habanalabs.h
index 6f27ce4fa01b..2cb705768786 100644
--- a/drivers/accel/habanalabs/common/habanalabs.h
+++ b/drivers/accel/habanalabs/common/habanalabs.h
@@ -45,7 +45,7 @@ struct hl_fpriv;
  * bits[63:59] - Encode mmap type
  * bits[45:0]  - mmap offset value
  *
- * NOTE: struct vm_area_struct.vm_pgoff uses offset in pages. Hence, these
+ * NOTE: struct mm_area.vm_pgoff uses offset in pages. Hence, these
  *  defines are w.r.t to PAGE_SIZE
  */
 #define HL_MMAP_TYPE_SHIFT		(59 - PAGE_SHIFT)
@@ -931,7 +931,7 @@ struct hl_mmap_mem_buf_behavior {
 	u64 mem_id;
 
 	int (*alloc)(struct hl_mmap_mem_buf *buf, gfp_t gfp, void *args);
-	int (*mmap)(struct hl_mmap_mem_buf *buf, struct vm_area_struct *vma, void *args);
+	int (*mmap)(struct hl_mmap_mem_buf *buf, struct mm_area *vma, void *args);
 	void (*release)(struct hl_mmap_mem_buf *buf);
 };
 
@@ -1650,7 +1650,7 @@ struct hl_asic_funcs {
 	void (*halt_engines)(struct hl_device *hdev, bool hard_reset, bool fw_reset);
 	int (*suspend)(struct hl_device *hdev);
 	int (*resume)(struct hl_device *hdev);
-	int (*mmap)(struct hl_device *hdev, struct vm_area_struct *vma,
+	int (*mmap)(struct hl_device *hdev, struct mm_area *vma,
 			void *cpu_addr, dma_addr_t dma_addr, size_t size);
 	void (*ring_doorbell)(struct hl_device *hdev, u32 hw_queue_id, u32 pi);
 	void (*pqe_write)(struct hl_device *hdev, __le64 *pqe,
@@ -1745,7 +1745,7 @@ struct hl_asic_funcs {
 	void (*ack_protection_bits_errors)(struct hl_device *hdev);
 	int (*get_hw_block_id)(struct hl_device *hdev, u64 block_addr,
 				u32 *block_size, u32 *block_id);
-	int (*hw_block_mmap)(struct hl_device *hdev, struct vm_area_struct *vma,
+	int (*hw_block_mmap)(struct hl_device *hdev, struct mm_area *vma,
 			u32 block_id, u32 block_size);
 	void (*enable_events_from_fw)(struct hl_device *hdev);
 	int (*ack_mmu_errors)(struct hl_device *hdev, u64 mmu_cap_mask);
@@ -3733,7 +3733,7 @@ int hl_access_cfg_region(struct hl_device *hdev, u64 addr, u64 *val,
 int hl_access_dev_mem(struct hl_device *hdev, enum pci_region region_type,
 			u64 addr, u64 *val, enum debugfs_access_type acc_type);
 
-int hl_mmap(struct file *filp, struct vm_area_struct *vma);
+int hl_mmap(struct file *filp, struct mm_area *vma);
 
 int hl_device_open(struct drm_device *drm, struct drm_file *file_priv);
 void hl_device_release(struct drm_device *ddev, struct drm_file *file_priv);
@@ -3819,7 +3819,7 @@ int hl_cb_create(struct hl_device *hdev, struct hl_mem_mgr *mmg,
 			struct hl_ctx *ctx, u32 cb_size, bool internal_cb,
 			bool map_cb, u64 *handle);
 int hl_cb_destroy(struct hl_mem_mgr *mmg, u64 cb_handle);
-int hl_hw_block_mmap(struct hl_fpriv *hpriv, struct vm_area_struct *vma);
+int hl_hw_block_mmap(struct hl_fpriv *hpriv, struct mm_area *vma);
 struct hl_cb *hl_cb_get(struct hl_mem_mgr *mmg, u64 handle);
 void hl_cb_put(struct hl_cb *cb);
 struct hl_cb *hl_cb_kernel_create(struct hl_device *hdev, u32 cb_size,
@@ -4063,7 +4063,7 @@ const char *hl_sync_engine_to_string(enum hl_sync_engine_type engine_type);
 void hl_mem_mgr_init(struct device *dev, struct hl_mem_mgr *mmg);
 void hl_mem_mgr_fini(struct hl_mem_mgr *mmg, struct hl_mem_mgr_fini_stats *stats);
 void hl_mem_mgr_idr_destroy(struct hl_mem_mgr *mmg);
-int hl_mem_mgr_mmap(struct hl_mem_mgr *mmg, struct vm_area_struct *vma,
+int hl_mem_mgr_mmap(struct hl_mem_mgr *mmg, struct mm_area *vma,
 		    void *args);
 struct hl_mmap_mem_buf *hl_mmap_mem_buf_get(struct hl_mem_mgr *mmg,
 						   u64 handle);
diff --git a/drivers/accel/habanalabs/common/memory.c b/drivers/accel/habanalabs/common/memory.c
index 601fdbe70179..4688d24b34df 100644
--- a/drivers/accel/habanalabs/common/memory.c
+++ b/drivers/accel/habanalabs/common/memory.c
@@ -1424,7 +1424,7 @@ static int map_block(struct hl_device *hdev, u64 address, u64 *handle, u32 *size
 	return 0;
 }
 
-static void hw_block_vm_close(struct vm_area_struct *vma)
+static void hw_block_vm_close(struct mm_area *vma)
 {
 	struct hl_vm_hw_block_list_node *lnode =
 		(struct hl_vm_hw_block_list_node *) vma->vm_private_data;
@@ -1452,12 +1452,12 @@ static const struct vm_operations_struct hw_block_vm_ops = {
 /**
  * hl_hw_block_mmap() - mmap a hw block to user.
  * @hpriv: pointer to the private data of the fd
- * @vma: pointer to vm_area_struct of the process
+ * @vma: pointer to mm_area of the process
  *
  * Driver increments context reference for every HW block mapped in order
  * to prevent user from closing FD without unmapping first
  */
-int hl_hw_block_mmap(struct hl_fpriv *hpriv, struct vm_area_struct *vma)
+int hl_hw_block_mmap(struct hl_fpriv *hpriv, struct mm_area *vma)
 {
 	struct hl_vm_hw_block_list_node *lnode;
 	struct hl_device *hdev = hpriv->hdev;
@@ -2103,7 +2103,7 @@ static void ts_buff_release(struct hl_mmap_mem_buf *buf)
 	kfree(ts_buff);
 }
 
-static int hl_ts_mmap(struct hl_mmap_mem_buf *buf, struct vm_area_struct *vma, void *args)
+static int hl_ts_mmap(struct hl_mmap_mem_buf *buf, struct mm_area *vma, void *args)
 {
 	struct hl_ts_buff *ts_buff = buf->private;
 
diff --git a/drivers/accel/habanalabs/common/memory_mgr.c b/drivers/accel/habanalabs/common/memory_mgr.c
index 99cd83139d46..ea06e092b341 100644
--- a/drivers/accel/habanalabs/common/memory_mgr.c
+++ b/drivers/accel/habanalabs/common/memory_mgr.c
@@ -196,7 +196,7 @@ hl_mmap_mem_buf_alloc(struct hl_mem_mgr *mmg,
  *
  * Put the memory buffer if it is no longer mapped.
  */
-static void hl_mmap_mem_buf_vm_close(struct vm_area_struct *vma)
+static void hl_mmap_mem_buf_vm_close(struct mm_area *vma)
 {
 	struct hl_mmap_mem_buf *buf =
 		(struct hl_mmap_mem_buf *)vma->vm_private_data;
@@ -227,7 +227,7 @@ static const struct vm_operations_struct hl_mmap_mem_buf_vm_ops = {
  *
  * Map the buffer specified by the vma->vm_pgoff to the given vma.
  */
-int hl_mem_mgr_mmap(struct hl_mem_mgr *mmg, struct vm_area_struct *vma,
+int hl_mem_mgr_mmap(struct hl_mem_mgr *mmg, struct mm_area *vma,
 		    void *args)
 {
 	struct hl_mmap_mem_buf *buf;
diff --git a/drivers/accel/habanalabs/gaudi/gaudi.c b/drivers/accel/habanalabs/gaudi/gaudi.c
index fa893a9b826e..a52647a1b640 100644
--- a/drivers/accel/habanalabs/gaudi/gaudi.c
+++ b/drivers/accel/habanalabs/gaudi/gaudi.c
@@ -4160,7 +4160,7 @@ static int gaudi_resume(struct hl_device *hdev)
 	return gaudi_init_iatu(hdev);
 }
 
-static int gaudi_mmap(struct hl_device *hdev, struct vm_area_struct *vma,
+static int gaudi_mmap(struct hl_device *hdev, struct mm_area *vma,
 			void *cpu_addr, dma_addr_t dma_addr, size_t size)
 {
 	int rc;
@@ -8769,7 +8769,7 @@ static int gaudi_get_hw_block_id(struct hl_device *hdev, u64 block_addr,
 }
 
 static int gaudi_block_mmap(struct hl_device *hdev,
-				struct vm_area_struct *vma,
+				struct mm_area *vma,
 				u32 block_id, u32 block_size)
 {
 	return -EPERM;
diff --git a/drivers/accel/habanalabs/gaudi2/gaudi2.c b/drivers/accel/habanalabs/gaudi2/gaudi2.c
index a38b88baadf2..12ef2bdebe5d 100644
--- a/drivers/accel/habanalabs/gaudi2/gaudi2.c
+++ b/drivers/accel/habanalabs/gaudi2/gaudi2.c
@@ -6475,7 +6475,7 @@ static int gaudi2_resume(struct hl_device *hdev)
 	return gaudi2_init_iatu(hdev);
 }
 
-static int gaudi2_mmap(struct hl_device *hdev, struct vm_area_struct *vma,
+static int gaudi2_mmap(struct hl_device *hdev, struct mm_area *vma,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size)
 {
 	int rc;
@@ -11238,7 +11238,7 @@ static int gaudi2_get_hw_block_id(struct hl_device *hdev, u64 block_addr,
 	return -EINVAL;
 }
 
-static int gaudi2_block_mmap(struct hl_device *hdev, struct vm_area_struct *vma,
+static int gaudi2_block_mmap(struct hl_device *hdev, struct mm_area *vma,
 			u32 block_id, u32 block_size)
 {
 	struct gaudi2_device *gaudi2 = hdev->asic_specific;
diff --git a/drivers/accel/habanalabs/goya/goya.c b/drivers/accel/habanalabs/goya/goya.c
index 84768e306269..9319d29bb802 100644
--- a/drivers/accel/habanalabs/goya/goya.c
+++ b/drivers/accel/habanalabs/goya/goya.c
@@ -2869,7 +2869,7 @@ int goya_resume(struct hl_device *hdev)
 	return goya_init_iatu(hdev);
 }
 
-static int goya_mmap(struct hl_device *hdev, struct vm_area_struct *vma,
+static int goya_mmap(struct hl_device *hdev, struct mm_area *vma,
 			void *cpu_addr, dma_addr_t dma_addr, size_t size)
 {
 	int rc;
@@ -5313,7 +5313,7 @@ static int goya_get_hw_block_id(struct hl_device *hdev, u64 block_addr,
 	return -EPERM;
 }
 
-static int goya_block_mmap(struct hl_device *hdev, struct vm_area_struct *vma,
+static int goya_block_mmap(struct hl_device *hdev, struct mm_area *vma,
 				u32 block_id, u32 block_size)
 {
 	return -EPERM;
diff --git a/drivers/accel/qaic/qaic_data.c b/drivers/accel/qaic/qaic_data.c
index 43aba57b48f0..331e4683f42a 100644
--- a/drivers/accel/qaic/qaic_data.c
+++ b/drivers/accel/qaic/qaic_data.c
@@ -602,7 +602,7 @@ static const struct vm_operations_struct drm_vm_ops = {
 	.close = drm_gem_vm_close,
 };
 
-static int qaic_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int qaic_gem_object_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct qaic_bo *bo = to_qaic_bo(obj);
 	unsigned long offset = 0;
diff --git a/drivers/acpi/pfr_telemetry.c b/drivers/acpi/pfr_telemetry.c
index 32bdf8cbe8f2..4222c75ced8e 100644
--- a/drivers/acpi/pfr_telemetry.c
+++ b/drivers/acpi/pfr_telemetry.c
@@ -295,7 +295,7 @@ static long pfrt_log_ioctl(struct file *file, unsigned int cmd, unsigned long ar
 }
 
 static int
-pfrt_log_mmap(struct file *file, struct vm_area_struct *vma)
+pfrt_log_mmap(struct file *file, struct mm_area *vma)
 {
 	struct pfrt_log_device *pfrt_log_dev;
 	struct pfrt_log_data_info info;
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index 76052006bd87..a674ff1ab9a5 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -5935,7 +5935,7 @@ static long binder_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 	return ret;
 }
 
-static void binder_vma_open(struct vm_area_struct *vma)
+static void binder_vma_open(struct mm_area *vma)
 {
 	struct binder_proc *proc = vma->vm_private_data;
 
@@ -5946,7 +5946,7 @@ static void binder_vma_open(struct vm_area_struct *vma)
 		     (unsigned long)pgprot_val(vma->vm_page_prot));
 }
 
-static void binder_vma_close(struct vm_area_struct *vma)
+static void binder_vma_close(struct mm_area *vma)
 {
 	struct binder_proc *proc = vma->vm_private_data;
 
@@ -5969,7 +5969,7 @@ static const struct vm_operations_struct binder_vm_ops = {
 	.fault = binder_vm_fault,
 };
 
-static int binder_mmap(struct file *filp, struct vm_area_struct *vma)
+static int binder_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct binder_proc *proc = filp->private_data;
 
diff --git a/drivers/android/binder_alloc.c b/drivers/android/binder_alloc.c
index fcfaf1b899c8..95d8a0def3c5 100644
--- a/drivers/android/binder_alloc.c
+++ b/drivers/android/binder_alloc.c
@@ -258,7 +258,7 @@ static int binder_page_insert(struct binder_alloc *alloc,
 			      struct page *page)
 {
 	struct mm_struct *mm = alloc->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int ret = -ESRCH;
 
 	/* attempt per-vma lock first */
@@ -892,7 +892,7 @@ void binder_alloc_free_buf(struct binder_alloc *alloc,
  *      -ENOMEM = failed to map memory to given address space
  */
 int binder_alloc_mmap_handler(struct binder_alloc *alloc,
-			      struct vm_area_struct *vma)
+			      struct mm_area *vma)
 {
 	struct binder_buffer *buffer;
 	const char *failure_string;
@@ -1140,7 +1140,7 @@ enum lru_status binder_alloc_free_page(struct list_head *item,
 	struct binder_shrinker_mdata *mdata = container_of(item, typeof(*mdata), lru);
 	struct binder_alloc *alloc = mdata->alloc;
 	struct mm_struct *mm = alloc->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct page *page_to_free;
 	unsigned long page_addr;
 	int mm_locked = 0;
diff --git a/drivers/android/binder_alloc.h b/drivers/android/binder_alloc.h
index feecd7414241..71474a96c9dd 100644
--- a/drivers/android/binder_alloc.h
+++ b/drivers/android/binder_alloc.h
@@ -143,7 +143,7 @@ binder_alloc_prepare_to_free(struct binder_alloc *alloc,
 void binder_alloc_free_buf(struct binder_alloc *alloc,
 			   struct binder_buffer *buffer);
 int binder_alloc_mmap_handler(struct binder_alloc *alloc,
-			      struct vm_area_struct *vma);
+			      struct mm_area *vma);
 void binder_alloc_deferred_release(struct binder_alloc *alloc);
 int binder_alloc_get_allocated_count(struct binder_alloc *alloc);
 void binder_alloc_print_allocated(struct seq_file *m,
diff --git a/drivers/auxdisplay/cfag12864bfb.c b/drivers/auxdisplay/cfag12864bfb.c
index 24baf6b2c587..c8953939f33a 100644
--- a/drivers/auxdisplay/cfag12864bfb.c
+++ b/drivers/auxdisplay/cfag12864bfb.c
@@ -47,7 +47,7 @@ static const struct fb_var_screeninfo cfag12864bfb_var = {
 	.vmode = FB_VMODE_NONINTERLACED,
 };
 
-static int cfag12864bfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int cfag12864bfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct page *pages = virt_to_page(cfag12864b_buffer);
 
diff --git a/drivers/auxdisplay/ht16k33.c b/drivers/auxdisplay/ht16k33.c
index 0b8ba754b343..835db2ac68c3 100644
--- a/drivers/auxdisplay/ht16k33.c
+++ b/drivers/auxdisplay/ht16k33.c
@@ -303,7 +303,7 @@ static int ht16k33_blank(int blank, struct fb_info *info)
 	return 0;
 }
 
-static int ht16k33_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int ht16k33_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct ht16k33_priv *priv = info->par;
 	struct page *pages = virt_to_page(priv->fbdev.buffer);
diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c
index 2fd05c1bd30b..55cfd9965a5d 100644
--- a/drivers/block/ublk_drv.c
+++ b/drivers/block/ublk_drv.c
@@ -1467,7 +1467,7 @@ static int ublk_ch_release(struct inode *inode, struct file *filp)
 }
 
 /* map pre-allocated per-queue cmd buffer to ublksrv daemon */
-static int ublk_ch_mmap(struct file *filp, struct vm_area_struct *vma)
+static int ublk_ch_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct ublk_device *ub = filp->private_data;
 	size_t sz = vma->vm_end - vma->vm_start;
diff --git a/drivers/cdx/cdx.c b/drivers/cdx/cdx.c
index 092306ca2541..f3f114c29555 100644
--- a/drivers/cdx/cdx.c
+++ b/drivers/cdx/cdx.c
@@ -708,7 +708,7 @@ static const struct vm_operations_struct cdx_phys_vm_ops = {
  *      this API is registered as a callback.
  * @kobj: kobject for mapping
  * @attr: struct bin_attribute for the file being mapped
- * @vma: struct vm_area_struct passed into the mmap
+ * @vma: struct mm_area passed into the mmap
  *
  * Use the regular CDX mapping routines to map a CDX resource into userspace.
  *
@@ -716,7 +716,7 @@ static const struct vm_operations_struct cdx_phys_vm_ops = {
  */
 static int cdx_mmap_resource(struct file *fp, struct kobject *kobj,
 			     const struct bin_attribute *attr,
-			     struct vm_area_struct *vma)
+			     struct mm_area *vma)
 {
 	struct cdx_device *cdx_dev = to_cdx_device(kobj_to_dev(kobj));
 	int num = (unsigned long)attr->private;
diff --git a/drivers/char/bsr.c b/drivers/char/bsr.c
index 837109ef6766..005cbf590708 100644
--- a/drivers/char/bsr.c
+++ b/drivers/char/bsr.c
@@ -111,7 +111,7 @@ static const struct class bsr_class = {
 	.dev_groups	= bsr_dev_groups,
 };
 
-static int bsr_mmap(struct file *filp, struct vm_area_struct *vma)
+static int bsr_mmap(struct file *filp, struct mm_area *vma)
 {
 	unsigned long size   = vma->vm_end - vma->vm_start;
 	struct bsr_dev *dev = filp->private_data;
diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c
index e110857824fc..af1076b99117 100644
--- a/drivers/char/hpet.c
+++ b/drivers/char/hpet.c
@@ -354,7 +354,7 @@ static __init int hpet_mmap_enable(char *str)
 }
 __setup("hpet_mmap=", hpet_mmap_enable);
 
-static int hpet_mmap(struct file *file, struct vm_area_struct *vma)
+static int hpet_mmap(struct file *file, struct mm_area *vma)
 {
 	struct hpet_dev *devp;
 	unsigned long addr;
@@ -372,7 +372,7 @@ static int hpet_mmap(struct file *file, struct vm_area_struct *vma)
 	return vm_iomap_memory(vma, addr, PAGE_SIZE);
 }
 #else
-static int hpet_mmap(struct file *file, struct vm_area_struct *vma)
+static int hpet_mmap(struct file *file, struct mm_area *vma)
 {
 	return -ENOSYS;
 }
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 169eed162a7f..350af6fa120a 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -322,13 +322,13 @@ static unsigned zero_mmap_capabilities(struct file *file)
 }
 
 /* can't do an in-place private mapping if there's no MMU */
-static inline int private_mapping_ok(struct vm_area_struct *vma)
+static inline int private_mapping_ok(struct mm_area *vma)
 {
 	return is_nommu_shared_mapping(vma->vm_flags);
 }
 #else
 
-static inline int private_mapping_ok(struct vm_area_struct *vma)
+static inline int private_mapping_ok(struct mm_area *vma)
 {
 	return 1;
 }
@@ -340,7 +340,7 @@ static const struct vm_operations_struct mmap_mem_ops = {
 #endif
 };
 
-static int mmap_mem(struct file *file, struct vm_area_struct *vma)
+static int mmap_mem(struct file *file, struct mm_area *vma)
 {
 	size_t size = vma->vm_end - vma->vm_start;
 	phys_addr_t offset = (phys_addr_t)vma->vm_pgoff << PAGE_SHIFT;
@@ -519,7 +519,7 @@ static ssize_t read_zero(struct file *file, char __user *buf,
 	return cleared;
 }
 
-static int mmap_zero(struct file *file, struct vm_area_struct *vma)
+static int mmap_zero(struct file *file, struct mm_area *vma)
 {
 #ifndef CONFIG_MMU
 	return -ENOSYS;
diff --git a/drivers/char/uv_mmtimer.c b/drivers/char/uv_mmtimer.c
index 956ebe2080a5..3a8a210592db 100644
--- a/drivers/char/uv_mmtimer.c
+++ b/drivers/char/uv_mmtimer.c
@@ -40,7 +40,7 @@ MODULE_LICENSE("GPL");
 
 static long uv_mmtimer_ioctl(struct file *file, unsigned int cmd,
 						unsigned long arg);
-static int uv_mmtimer_mmap(struct file *file, struct vm_area_struct *vma);
+static int uv_mmtimer_mmap(struct file *file, struct mm_area *vma);
 
 /*
  * Period in femtoseconds (10^-15 s)
@@ -144,7 +144,7 @@ static long uv_mmtimer_ioctl(struct file *file, unsigned int cmd,
  * Calls remap_pfn_range() to map the clock's registers into
  * the calling process' address space.
  */
-static int uv_mmtimer_mmap(struct file *file, struct vm_area_struct *vma)
+static int uv_mmtimer_mmap(struct file *file, struct mm_area *vma)
 {
 	unsigned long uv_mmtimer_addr;
 
diff --git a/drivers/comedi/comedi_fops.c b/drivers/comedi/comedi_fops.c
index b9df9b19d4bd..9e3ef27295ec 100644
--- a/drivers/comedi/comedi_fops.c
+++ b/drivers/comedi/comedi_fops.c
@@ -2282,7 +2282,7 @@ static long comedi_unlocked_ioctl(struct file *file, unsigned int cmd,
 	return rc;
 }
 
-static void comedi_vm_open(struct vm_area_struct *area)
+static void comedi_vm_open(struct mm_area *area)
 {
 	struct comedi_buf_map *bm;
 
@@ -2290,7 +2290,7 @@ static void comedi_vm_open(struct vm_area_struct *area)
 	comedi_buf_map_get(bm);
 }
 
-static void comedi_vm_close(struct vm_area_struct *area)
+static void comedi_vm_close(struct mm_area *area)
 {
 	struct comedi_buf_map *bm;
 
@@ -2298,7 +2298,7 @@ static void comedi_vm_close(struct vm_area_struct *area)
 	comedi_buf_map_put(bm);
 }
 
-static int comedi_vm_access(struct vm_area_struct *vma, unsigned long addr,
+static int comedi_vm_access(struct mm_area *vma, unsigned long addr,
 			    void *buf, int len, int write)
 {
 	struct comedi_buf_map *bm = vma->vm_private_data;
@@ -2318,7 +2318,7 @@ static const struct vm_operations_struct comedi_vm_ops = {
 	.access = comedi_vm_access,
 };
 
-static int comedi_mmap(struct file *file, struct vm_area_struct *vma)
+static int comedi_mmap(struct file *file, struct mm_area *vma)
 {
 	struct comedi_file *cfp = file->private_data;
 	struct comedi_device *dev = cfp->dev;
diff --git a/drivers/crypto/hisilicon/qm.c b/drivers/crypto/hisilicon/qm.c
index d3f5d108b898..c9d9b977c07a 100644
--- a/drivers/crypto/hisilicon/qm.c
+++ b/drivers/crypto/hisilicon/qm.c
@@ -2454,7 +2454,7 @@ static void hisi_qm_uacce_put_queue(struct uacce_queue *q)
 
 /* map sq/cq/doorbell to user space */
 static int hisi_qm_uacce_mmap(struct uacce_queue *q,
-			      struct vm_area_struct *vma,
+			      struct mm_area *vma,
 			      struct uacce_qfile_region *qfr)
 {
 	struct hisi_qp *qp = q->priv;
diff --git a/drivers/dax/device.c b/drivers/dax/device.c
index 328231cfb028..6a5724727688 100644
--- a/drivers/dax/device.c
+++ b/drivers/dax/device.c
@@ -14,7 +14,7 @@
 #include "dax-private.h"
 #include "bus.h"
 
-static int check_vma(struct dev_dax *dev_dax, struct vm_area_struct *vma,
+static int check_vma(struct dev_dax *dev_dax, struct mm_area *vma,
 		const char *func)
 {
 	struct device *dev = &dev_dax->dev;
@@ -261,7 +261,7 @@ static vm_fault_t dev_dax_fault(struct vm_fault *vmf)
 	return dev_dax_huge_fault(vmf, 0);
 }
 
-static int dev_dax_may_split(struct vm_area_struct *vma, unsigned long addr)
+static int dev_dax_may_split(struct mm_area *vma, unsigned long addr)
 {
 	struct file *filp = vma->vm_file;
 	struct dev_dax *dev_dax = filp->private_data;
@@ -271,7 +271,7 @@ static int dev_dax_may_split(struct vm_area_struct *vma, unsigned long addr)
 	return 0;
 }
 
-static unsigned long dev_dax_pagesize(struct vm_area_struct *vma)
+static unsigned long dev_dax_pagesize(struct mm_area *vma)
 {
 	struct file *filp = vma->vm_file;
 	struct dev_dax *dev_dax = filp->private_data;
@@ -286,7 +286,7 @@ static const struct vm_operations_struct dax_vm_ops = {
 	.pagesize = dev_dax_pagesize,
 };
 
-static int dax_mmap(struct file *filp, struct vm_area_struct *vma)
+static int dax_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct dev_dax *dev_dax = filp->private_data;
 	int rc, id;
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index 5baa83b85515..afc92bd59362 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -144,7 +144,7 @@ static struct file_system_type dma_buf_fs_type = {
 	.kill_sb = kill_anon_super,
 };
 
-static int dma_buf_mmap_internal(struct file *file, struct vm_area_struct *vma)
+static int dma_buf_mmap_internal(struct file *file, struct mm_area *vma)
 {
 	struct dma_buf *dmabuf;
 
@@ -1364,7 +1364,7 @@ EXPORT_SYMBOL_NS_GPL(dma_buf_move_notify, "DMA_BUF");
  *
  *   .. code-block:: c
  *
- *     int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *, unsigned long);
+ *     int dma_buf_mmap(struct dma_buf *, struct mm_area *, unsigned long);
  *
  *   If the importing subsystem simply provides a special-purpose mmap call to
  *   set up a mapping in userspace, calling do_mmap with &dma_buf.file will
@@ -1474,7 +1474,7 @@ EXPORT_SYMBOL_NS_GPL(dma_buf_end_cpu_access, "DMA_BUF");
  *
  * Can return negative error values, returns 0 on success.
  */
-int dma_buf_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma,
+int dma_buf_mmap(struct dma_buf *dmabuf, struct mm_area *vma,
 		 unsigned long pgoff)
 {
 	if (WARN_ON(!dmabuf || !vma))
diff --git a/drivers/dma-buf/heaps/cma_heap.c b/drivers/dma-buf/heaps/cma_heap.c
index 9512d050563a..17ae7983a93a 100644
--- a/drivers/dma-buf/heaps/cma_heap.c
+++ b/drivers/dma-buf/heaps/cma_heap.c
@@ -162,7 +162,7 @@ static int cma_heap_dma_buf_end_cpu_access(struct dma_buf *dmabuf,
 
 static vm_fault_t cma_heap_vm_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct cma_heap_buffer *buffer = vma->vm_private_data;
 
 	if (vmf->pgoff >= buffer->pagecount)
@@ -175,7 +175,7 @@ static const struct vm_operations_struct dma_heap_vm_ops = {
 	.fault = cma_heap_vm_fault,
 };
 
-static int cma_heap_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma)
+static int cma_heap_mmap(struct dma_buf *dmabuf, struct mm_area *vma)
 {
 	struct cma_heap_buffer *buffer = dmabuf->priv;
 
diff --git a/drivers/dma-buf/heaps/system_heap.c b/drivers/dma-buf/heaps/system_heap.c
index 26d5dc89ea16..43fd8260f29b 100644
--- a/drivers/dma-buf/heaps/system_heap.c
+++ b/drivers/dma-buf/heaps/system_heap.c
@@ -192,7 +192,7 @@ static int system_heap_dma_buf_end_cpu_access(struct dma_buf *dmabuf,
 	return 0;
 }
 
-static int system_heap_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma)
+static int system_heap_mmap(struct dma_buf *dmabuf, struct mm_area *vma)
 {
 	struct system_heap_buffer *buffer = dmabuf->priv;
 	struct sg_table *table = &buffer->sg_table;
diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c
index e74e36a8ecda..7c3de3568e46 100644
--- a/drivers/dma-buf/udmabuf.c
+++ b/drivers/dma-buf/udmabuf.c
@@ -46,7 +46,7 @@ struct udmabuf {
 
 static vm_fault_t udmabuf_vm_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct udmabuf *ubuf = vma->vm_private_data;
 	pgoff_t pgoff = vmf->pgoff;
 	unsigned long addr, pfn;
@@ -93,7 +93,7 @@ static const struct vm_operations_struct udmabuf_vm_ops = {
 	.fault = udmabuf_vm_fault,
 };
 
-static int mmap_udmabuf(struct dma_buf *buf, struct vm_area_struct *vma)
+static int mmap_udmabuf(struct dma_buf *buf, struct mm_area *vma)
 {
 	struct udmabuf *ubuf = buf->priv;
 
diff --git a/drivers/dma/idxd/cdev.c b/drivers/dma/idxd/cdev.c
index ff94ee892339..2fd71e61d6c8 100644
--- a/drivers/dma/idxd/cdev.c
+++ b/drivers/dma/idxd/cdev.c
@@ -368,7 +368,7 @@ static int idxd_cdev_release(struct inode *node, struct file *filep)
 	return 0;
 }
 
-static int check_vma(struct idxd_wq *wq, struct vm_area_struct *vma,
+static int check_vma(struct idxd_wq *wq, struct mm_area *vma,
 		     const char *func)
 {
 	struct device *dev = &wq->idxd->pdev->dev;
@@ -384,7 +384,7 @@ static int check_vma(struct idxd_wq *wq, struct vm_area_struct *vma,
 	return 0;
 }
 
-static int idxd_cdev_mmap(struct file *filp, struct vm_area_struct *vma)
+static int idxd_cdev_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct idxd_user_context *ctx = filp->private_data;
 	struct idxd_wq *wq = ctx->wq;
diff --git a/drivers/firewire/core-cdev.c b/drivers/firewire/core-cdev.c
index bd04980009a4..a8a2ccd8af78 100644
--- a/drivers/firewire/core-cdev.c
+++ b/drivers/firewire/core-cdev.c
@@ -1786,7 +1786,7 @@ static long fw_device_op_ioctl(struct file *file,
 	return dispatch_ioctl(file->private_data, cmd, (void __user *)arg);
 }
 
-static int fw_device_op_mmap(struct file *file, struct vm_area_struct *vma)
+static int fw_device_op_mmap(struct file *file, struct mm_area *vma)
 {
 	struct client *client = file->private_data;
 	unsigned long size;
diff --git a/drivers/fpga/dfl-afu-main.c b/drivers/fpga/dfl-afu-main.c
index 3bf8e7338dbe..1b9b86d2ee0f 100644
--- a/drivers/fpga/dfl-afu-main.c
+++ b/drivers/fpga/dfl-afu-main.c
@@ -805,7 +805,7 @@ static const struct vm_operations_struct afu_vma_ops = {
 #endif
 };
 
-static int afu_mmap(struct file *filp, struct vm_area_struct *vma)
+static int afu_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct platform_device *pdev = filp->private_data;
 	u64 size = vma->vm_end - vma->vm_start;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
index 69429df09477..993513183c9c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gem.c
@@ -272,7 +272,7 @@ static void amdgpu_gem_object_close(struct drm_gem_object *obj,
 	drm_exec_fini(&exec);
 }
 
-static int amdgpu_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int amdgpu_gem_object_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct amdgpu_bo *bo = gem_to_amdgpu_bo(obj);
 
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
index 53b71e9d8076..304a1c09b89c 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
@@ -700,7 +700,7 @@ int amdgpu_ttm_tt_get_user_pages(struct amdgpu_bo *bo, struct page **pages,
 	struct ttm_tt *ttm = bo->tbo.ttm;
 	struct amdgpu_ttm_tt *gtt = ttm_to_amdgpu_ttm_tt(ttm);
 	unsigned long start = gtt->userptr;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm;
 	bool readonly;
 	int r = 0;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
index 1e9dd00620bf..00a7f935b0a7 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_chardev.c
@@ -48,7 +48,7 @@
 static long kfd_ioctl(struct file *, unsigned int, unsigned long);
 static int kfd_open(struct inode *, struct file *);
 static int kfd_release(struct inode *, struct file *);
-static int kfd_mmap(struct file *, struct vm_area_struct *);
+static int kfd_mmap(struct file *, struct mm_area *);
 
 static const char kfd_dev_name[] = "kfd";
 
@@ -3360,7 +3360,7 @@ static long kfd_ioctl(struct file *filep, unsigned int cmd, unsigned long arg)
 }
 
 static int kfd_mmio_mmap(struct kfd_node *dev, struct kfd_process *process,
-		      struct vm_area_struct *vma)
+		      struct mm_area *vma)
 {
 	phys_addr_t address;
 
@@ -3393,7 +3393,7 @@ static int kfd_mmio_mmap(struct kfd_node *dev, struct kfd_process *process,
 }
 
 
-static int kfd_mmap(struct file *filp, struct vm_area_struct *vma)
+static int kfd_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct kfd_process *process;
 	struct kfd_node *dev = NULL;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c b/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c
index 05c74887fd6f..cff9e53c009c 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c
@@ -104,7 +104,7 @@ void kfd_doorbell_fini(struct kfd_dev *kfd)
 }
 
 int kfd_doorbell_mmap(struct kfd_node *dev, struct kfd_process *process,
-		      struct vm_area_struct *vma)
+		      struct mm_area *vma)
 {
 	phys_addr_t address;
 	struct kfd_process_device *pdd;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_events.c b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
index fecdb6794075..8b767a08782a 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_events.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_events.c
@@ -1063,7 +1063,7 @@ int kfd_wait_on_events(struct kfd_process *p,
 	return ret;
 }
 
-int kfd_event_mmap(struct kfd_process *p, struct vm_area_struct *vma)
+int kfd_event_mmap(struct kfd_process *p, struct mm_area *vma)
 {
 	unsigned long pfn;
 	struct kfd_signal_page *page;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
index 79251f22b702..86560564d30d 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_migrate.c
@@ -240,7 +240,7 @@ svm_migrate_addr(struct amdgpu_device *adev, struct page *page)
 }
 
 static struct page *
-svm_migrate_get_sys_page(struct vm_area_struct *vma, unsigned long addr)
+svm_migrate_get_sys_page(struct mm_area *vma, unsigned long addr)
 {
 	struct page *page;
 
@@ -385,7 +385,7 @@ svm_migrate_copy_to_vram(struct kfd_node *node, struct svm_range *prange,
 
 static long
 svm_migrate_vma_to_vram(struct kfd_node *node, struct svm_range *prange,
-			struct vm_area_struct *vma, uint64_t start,
+			struct mm_area *vma, uint64_t start,
 			uint64_t end, uint32_t trigger, uint64_t ttm_res_offset)
 {
 	struct kfd_process *p = container_of(prange->svms, struct kfd_process, svms);
@@ -489,7 +489,7 @@ svm_migrate_ram_to_vram(struct svm_range *prange, uint32_t best_loc,
 			struct mm_struct *mm, uint32_t trigger)
 {
 	unsigned long addr, start, end;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	uint64_t ttm_res_offset;
 	struct kfd_node *node;
 	unsigned long mpages = 0;
@@ -668,7 +668,7 @@ svm_migrate_copy_to_ram(struct amdgpu_device *adev, struct svm_range *prange,
  * svm_migrate_vma_to_ram - migrate range inside one vma from device to system
  *
  * @prange: svm range structure
- * @vma: vm_area_struct that range [start, end] belongs to
+ * @vma: mm_area that range [start, end] belongs to
  * @start: range start virtual address in pages
  * @end: range end virtual address in pages
  * @node: kfd node device to migrate from
@@ -683,7 +683,7 @@ svm_migrate_copy_to_ram(struct amdgpu_device *adev, struct svm_range *prange,
  */
 static long
 svm_migrate_vma_to_ram(struct kfd_node *node, struct svm_range *prange,
-		       struct vm_area_struct *vma, uint64_t start, uint64_t end,
+		       struct mm_area *vma, uint64_t start, uint64_t end,
 		       uint32_t trigger, struct page *fault_page)
 {
 	struct kfd_process *p = container_of(prange->svms, struct kfd_process, svms);
@@ -793,7 +793,7 @@ int svm_migrate_vram_to_ram(struct svm_range *prange, struct mm_struct *mm,
 			    uint32_t trigger, struct page *fault_page)
 {
 	struct kfd_node *node;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr;
 	unsigned long start;
 	unsigned long end;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
index f6aedf69c644..82d332c7bdd1 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_priv.h
@@ -61,7 +61,7 @@
  * BITS[61:46] - Encode gpu_id. To identify to which GPU the offset belongs to
  * BITS[45:0]  - MMAP offset value
  *
- * NOTE: struct vm_area_struct.vm_pgoff uses offset in pages. Hence, these
+ * NOTE: struct mm_area.vm_pgoff uses offset in pages. Hence, these
  *  defines are w.r.t to PAGE_SIZE
  */
 #define KFD_MMAP_TYPE_SHIFT	62
@@ -1077,7 +1077,7 @@ struct kfd_process_device *kfd_create_process_device_data(struct kfd_node *dev,
 bool kfd_process_xnack_mode(struct kfd_process *p, bool supported);
 
 int kfd_reserved_mem_mmap(struct kfd_node *dev, struct kfd_process *process,
-			  struct vm_area_struct *vma);
+			  struct mm_area *vma);
 
 /* KFD process API for creating and translating handles */
 int kfd_process_device_create_obj_handle(struct kfd_process_device *pdd,
@@ -1099,7 +1099,7 @@ size_t kfd_doorbell_process_slice(struct kfd_dev *kfd);
 int kfd_doorbell_init(struct kfd_dev *kfd);
 void kfd_doorbell_fini(struct kfd_dev *kfd);
 int kfd_doorbell_mmap(struct kfd_node *dev, struct kfd_process *process,
-		      struct vm_area_struct *vma);
+		      struct mm_area *vma);
 void __iomem *kfd_get_kernel_doorbell(struct kfd_dev *kfd,
 					unsigned int *doorbell_off);
 void kfd_release_kernel_doorbell(struct kfd_dev *kfd, u32 __iomem *db_addr);
@@ -1487,7 +1487,7 @@ extern const struct kfd_device_global_init_class device_global_init_class_cik;
 
 int kfd_event_init_process(struct kfd_process *p);
 void kfd_event_free_process(struct kfd_process *p);
-int kfd_event_mmap(struct kfd_process *process, struct vm_area_struct *vma);
+int kfd_event_mmap(struct kfd_process *process, struct mm_area *vma);
 int kfd_wait_on_events(struct kfd_process *p,
 		       uint32_t num_events, void __user *data,
 		       bool all, uint32_t *user_timeout_ms,
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_process.c b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
index 7c0c24732481..94056ffd51d7 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_process.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_process.c
@@ -2111,7 +2111,7 @@ int kfd_resume_all_processes(void)
 }
 
 int kfd_reserved_mem_mmap(struct kfd_node *dev, struct kfd_process *process,
-			  struct vm_area_struct *vma)
+			  struct mm_area *vma)
 {
 	struct kfd_process_device *pdd;
 	struct qcm_process_device *qpd;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index 100717a98ec1..01e2538d9622 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -1704,7 +1704,7 @@ static int svm_range_validate_and_map(struct mm_struct *mm,
 		struct hmm_range *hmm_range = NULL;
 		unsigned long map_start_vma;
 		unsigned long map_last_vma;
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 		unsigned long next = 0;
 		unsigned long offset;
 		unsigned long npages;
@@ -2721,7 +2721,7 @@ svm_range_get_range_boundaries(struct kfd_process *p, int64_t addr,
 			       unsigned long *start, unsigned long *last,
 			       bool *is_heap_stack)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct interval_tree_node *node;
 	struct rb_node *rb_node;
 	unsigned long start_limit, end_limit;
@@ -2938,7 +2938,7 @@ svm_range_count_fault(struct kfd_node *node, struct kfd_process *p,
 }
 
 static bool
-svm_fault_allowed(struct vm_area_struct *vma, bool write_fault)
+svm_fault_allowed(struct mm_area *vma, bool write_fault)
 {
 	unsigned long requested = VM_READ;
 
@@ -2965,7 +2965,7 @@ svm_range_restore_pages(struct amdgpu_device *adev, unsigned int pasid,
 	int32_t best_loc;
 	int32_t gpuid, gpuidx = MAX_GPU_INSTANCE;
 	bool write_locked = false;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	bool migration = false;
 	int r = 0;
 
@@ -3373,7 +3373,7 @@ static int
 svm_range_is_valid(struct kfd_process *p, uint64_t start, uint64_t size)
 {
 	const unsigned long device_vma = VM_IO | VM_PFNMAP | VM_MIXEDMAP;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long end;
 	unsigned long start_unchg = start;
 
diff --git a/drivers/gpu/drm/armada/armada_gem.c b/drivers/gpu/drm/armada/armada_gem.c
index 1a1680d71486..94767247f919 100644
--- a/drivers/gpu/drm/armada/armada_gem.c
+++ b/drivers/gpu/drm/armada/armada_gem.c
@@ -471,7 +471,7 @@ static void armada_gem_prime_unmap_dma_buf(struct dma_buf_attachment *attach,
 }
 
 static int
-armada_gem_dmabuf_mmap(struct dma_buf *buf, struct vm_area_struct *vma)
+armada_gem_dmabuf_mmap(struct dma_buf *buf, struct mm_area *vma)
 {
 	return -EINVAL;
 }
diff --git a/drivers/gpu/drm/drm_fbdev_dma.c b/drivers/gpu/drm/drm_fbdev_dma.c
index 02a516e77192..d6b5bcdbc19f 100644
--- a/drivers/gpu/drm/drm_fbdev_dma.c
+++ b/drivers/gpu/drm/drm_fbdev_dma.c
@@ -35,7 +35,7 @@ static int drm_fbdev_dma_fb_release(struct fb_info *info, int user)
 	return 0;
 }
 
-static int drm_fbdev_dma_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int drm_fbdev_dma_fb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct drm_fb_helper *fb_helper = info->par;
 
diff --git a/drivers/gpu/drm/drm_fbdev_shmem.c b/drivers/gpu/drm/drm_fbdev_shmem.c
index f824369baacd..3077d8e6e55b 100644
--- a/drivers/gpu/drm/drm_fbdev_shmem.c
+++ b/drivers/gpu/drm/drm_fbdev_shmem.c
@@ -38,7 +38,7 @@ FB_GEN_DEFAULT_DEFERRED_SYSMEM_OPS(drm_fbdev_shmem,
 				   drm_fb_helper_damage_range,
 				   drm_fb_helper_damage_area);
 
-static int drm_fbdev_shmem_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int drm_fbdev_shmem_fb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct drm_fb_helper *fb_helper = info->par;
 	struct drm_framebuffer *fb = fb_helper->fb;
diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c
index c6240bab3fa5..f7a750cea62c 100644
--- a/drivers/gpu/drm/drm_gem.c
+++ b/drivers/gpu/drm/drm_gem.c
@@ -1013,7 +1013,7 @@ EXPORT_SYMBOL(drm_gem_object_free);
  * This function implements the #vm_operations_struct open() callback for GEM
  * drivers. This must be used together with drm_gem_vm_close().
  */
-void drm_gem_vm_open(struct vm_area_struct *vma)
+void drm_gem_vm_open(struct mm_area *vma)
 {
 	struct drm_gem_object *obj = vma->vm_private_data;
 
@@ -1028,7 +1028,7 @@ EXPORT_SYMBOL(drm_gem_vm_open);
  * This function implements the #vm_operations_struct close() callback for GEM
  * drivers. This must be used together with drm_gem_vm_open().
  */
-void drm_gem_vm_close(struct vm_area_struct *vma)
+void drm_gem_vm_close(struct mm_area *vma)
 {
 	struct drm_gem_object *obj = vma->vm_private_data;
 
@@ -1061,7 +1061,7 @@ EXPORT_SYMBOL(drm_gem_vm_close);
  * size, or if no vm_ops are provided.
  */
 int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size,
-		     struct vm_area_struct *vma)
+		     struct mm_area *vma)
 {
 	int ret;
 
@@ -1119,7 +1119,7 @@ EXPORT_SYMBOL(drm_gem_mmap_obj);
  * If the caller is not granted access to the buffer object, the mmap will fail
  * with EACCES. Please see the vma manager for more information.
  */
-int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma)
+int drm_gem_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct drm_file *priv = filp->private_data;
 	struct drm_device *dev = priv->minor->dev;
diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c
index b7f033d4352a..d3ae2d67fcc0 100644
--- a/drivers/gpu/drm/drm_gem_dma_helper.c
+++ b/drivers/gpu/drm/drm_gem_dma_helper.c
@@ -519,7 +519,7 @@ EXPORT_SYMBOL_GPL(drm_gem_dma_vmap);
  * Returns:
  * 0 on success or a negative error code on failure.
  */
-int drm_gem_dma_mmap(struct drm_gem_dma_object *dma_obj, struct vm_area_struct *vma)
+int drm_gem_dma_mmap(struct drm_gem_dma_object *dma_obj, struct mm_area *vma)
 {
 	struct drm_gem_object *obj = &dma_obj->base;
 	int ret;
diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_gem_shmem_helper.c
index d99dee67353a..b98f02716ad7 100644
--- a/drivers/gpu/drm/drm_gem_shmem_helper.c
+++ b/drivers/gpu/drm/drm_gem_shmem_helper.c
@@ -533,7 +533,7 @@ EXPORT_SYMBOL_GPL(drm_gem_shmem_dumb_create);
 
 static vm_fault_t drm_gem_shmem_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct drm_gem_object *obj = vma->vm_private_data;
 	struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj);
 	loff_t num_pages = obj->size >> PAGE_SHIFT;
@@ -561,7 +561,7 @@ static vm_fault_t drm_gem_shmem_fault(struct vm_fault *vmf)
 	return ret;
 }
 
-static void drm_gem_shmem_vm_open(struct vm_area_struct *vma)
+static void drm_gem_shmem_vm_open(struct mm_area *vma)
 {
 	struct drm_gem_object *obj = vma->vm_private_data;
 	struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj);
@@ -583,7 +583,7 @@ static void drm_gem_shmem_vm_open(struct vm_area_struct *vma)
 	drm_gem_vm_open(vma);
 }
 
-static void drm_gem_shmem_vm_close(struct vm_area_struct *vma)
+static void drm_gem_shmem_vm_close(struct mm_area *vma)
 {
 	struct drm_gem_object *obj = vma->vm_private_data;
 	struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj);
@@ -613,7 +613,7 @@ EXPORT_SYMBOL_GPL(drm_gem_shmem_vm_ops);
  * Returns:
  * 0 on success or a negative error code on failure.
  */
-int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct vm_area_struct *vma)
+int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct mm_area *vma)
 {
 	struct drm_gem_object *obj = &shmem->base;
 	int ret;
diff --git a/drivers/gpu/drm/drm_gem_ttm_helper.c b/drivers/gpu/drm/drm_gem_ttm_helper.c
index 3734aa2d1c5b..5ab41caf8e4a 100644
--- a/drivers/gpu/drm/drm_gem_ttm_helper.c
+++ b/drivers/gpu/drm/drm_gem_ttm_helper.c
@@ -97,7 +97,7 @@ EXPORT_SYMBOL(drm_gem_ttm_vunmap);
  * callback.
  */
 int drm_gem_ttm_mmap(struct drm_gem_object *gem,
-		     struct vm_area_struct *vma)
+		     struct mm_area *vma)
 {
 	struct ttm_buffer_object *bo = drm_gem_ttm_of_gem(gem);
 	int ret;
diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c
index 38431e8360e7..8d7fd83f2f1f 100644
--- a/drivers/gpu/drm/drm_gpusvm.c
+++ b/drivers/gpu/drm/drm_gpusvm.c
@@ -902,7 +902,7 @@ static bool drm_gpusvm_check_pages(struct drm_gpusvm *gpusvm,
 static unsigned long
 drm_gpusvm_range_chunk_size(struct drm_gpusvm *gpusvm,
 			    struct drm_gpusvm_notifier *notifier,
-			    struct vm_area_struct *vas,
+			    struct mm_area *vas,
 			    unsigned long fault_addr,
 			    unsigned long gpuva_start,
 			    unsigned long gpuva_end,
@@ -1003,7 +1003,7 @@ drm_gpusvm_range_find_or_insert(struct drm_gpusvm *gpusvm,
 	struct drm_gpusvm_notifier *notifier;
 	struct drm_gpusvm_range *range;
 	struct mm_struct *mm = gpusvm->mm;
-	struct vm_area_struct *vas;
+	struct mm_area *vas;
 	bool notifier_alloc = false;
 	unsigned long chunk_size;
 	int err;
@@ -1678,7 +1678,7 @@ int drm_gpusvm_migrate_to_devmem(struct drm_gpusvm *gpusvm,
 	};
 	struct mm_struct *mm = gpusvm->mm;
 	unsigned long i, npages = npages_in_range(start, end);
-	struct vm_area_struct *vas;
+	struct mm_area *vas;
 	struct drm_gpusvm_zdd *zdd = NULL;
 	struct page **pages;
 	dma_addr_t *dma_addr;
@@ -1800,7 +1800,7 @@ EXPORT_SYMBOL_GPL(drm_gpusvm_migrate_to_devmem);
  *
  * Return: 0 on success, negative error code on failure.
  */
-static int drm_gpusvm_migrate_populate_ram_pfn(struct vm_area_struct *vas,
+static int drm_gpusvm_migrate_populate_ram_pfn(struct mm_area *vas,
 					       struct page *fault_page,
 					       unsigned long npages,
 					       unsigned long *mpages,
@@ -1962,7 +1962,7 @@ EXPORT_SYMBOL_GPL(drm_gpusvm_evict_to_ram);
  *
  * Return: 0 on success, negative error code on failure.
  */
-static int __drm_gpusvm_migrate_to_ram(struct vm_area_struct *vas,
+static int __drm_gpusvm_migrate_to_ram(struct mm_area *vas,
 				       void *device_private_page_owner,
 				       struct page *page,
 				       unsigned long fault_addr,
diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
index bdb51c8f262e..3691e0445696 100644
--- a/drivers/gpu/drm/drm_prime.c
+++ b/drivers/gpu/drm/drm_prime.c
@@ -737,7 +737,7 @@ EXPORT_SYMBOL(drm_gem_dmabuf_vunmap);
  * The fake GEM offset is added to vma->vm_pgoff and &drm_driver->fops->mmap is
  * called to set up the mapping.
  */
-int drm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+int drm_gem_prime_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct drm_file *priv;
 	struct file *fil;
@@ -795,7 +795,7 @@ EXPORT_SYMBOL(drm_gem_prime_mmap);
  *
  * Returns 0 on success or a negative error code on failure.
  */
-int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma)
+int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct mm_area *vma)
 {
 	struct drm_gem_object *obj = dma_buf->priv;
 
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
index 2f844e82bc46..8a5d096ddb36 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c
@@ -125,7 +125,7 @@ void etnaviv_gem_put_pages(struct etnaviv_gem_object *etnaviv_obj)
 }
 
 static int etnaviv_gem_mmap_obj(struct etnaviv_gem_object *etnaviv_obj,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	pgprot_t vm_page_prot;
 
@@ -152,7 +152,7 @@ static int etnaviv_gem_mmap_obj(struct etnaviv_gem_object *etnaviv_obj,
 	return 0;
 }
 
-static int etnaviv_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int etnaviv_gem_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
 
@@ -161,7 +161,7 @@ static int etnaviv_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct *v
 
 static vm_fault_t etnaviv_gem_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct drm_gem_object *obj = vma->vm_private_data;
 	struct etnaviv_gem_object *etnaviv_obj = to_etnaviv_bo(obj);
 	struct page **pages;
@@ -718,7 +718,7 @@ static void etnaviv_gem_userptr_release(struct etnaviv_gem_object *etnaviv_obj)
 }
 
 static int etnaviv_gem_userptr_mmap_obj(struct etnaviv_gem_object *etnaviv_obj,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	return -EINVAL;
 }
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.h b/drivers/gpu/drm/etnaviv/etnaviv_gem.h
index e5ee82a0674c..20c10d1bedd2 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem.h
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.h
@@ -68,7 +68,7 @@ struct etnaviv_gem_ops {
 	int (*get_pages)(struct etnaviv_gem_object *);
 	void (*release)(struct etnaviv_gem_object *);
 	void *(*vmap)(struct etnaviv_gem_object *);
-	int (*mmap)(struct etnaviv_gem_object *, struct vm_area_struct *);
+	int (*mmap)(struct etnaviv_gem_object *, struct mm_area *);
 };
 
 static inline bool is_active(struct etnaviv_gem_object *etnaviv_obj)
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
index 42e57d142554..b81b597367e0 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c
@@ -89,7 +89,7 @@ static void *etnaviv_gem_prime_vmap_impl(struct etnaviv_gem_object *etnaviv_obj)
 }
 
 static int etnaviv_gem_prime_mmap_obj(struct etnaviv_gem_object *etnaviv_obj,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	int ret;
 
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 9526a25e90ac..637b38b274cd 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -24,7 +24,7 @@
 
 #define MAX_CONNECTOR		4
 
-static int exynos_drm_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int exynos_drm_fb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct drm_fb_helper *helper = info->par;
 	struct drm_gem_object *obj = drm_gem_fb_get_obj(helper->fb, 0);
diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c
index 4787fee4696f..8ab046d62150 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_gem.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c
@@ -20,7 +20,7 @@
 
 MODULE_IMPORT_NS("DMA_BUF");
 
-static int exynos_drm_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
+static int exynos_drm_gem_mmap(struct drm_gem_object *obj, struct mm_area *vma);
 
 static int exynos_drm_alloc_buf(struct exynos_drm_gem *exynos_gem, bool kvmap)
 {
@@ -268,7 +268,7 @@ struct exynos_drm_gem *exynos_drm_gem_get(struct drm_file *filp,
 }
 
 static int exynos_drm_gem_mmap_buffer(struct exynos_drm_gem *exynos_gem,
-				      struct vm_area_struct *vma)
+				      struct mm_area *vma)
 {
 	struct drm_device *drm_dev = exynos_gem->base.dev;
 	unsigned long vm_size;
@@ -360,7 +360,7 @@ int exynos_drm_gem_dumb_create(struct drm_file *file_priv,
 	return 0;
 }
 
-static int exynos_drm_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int exynos_drm_gem_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct exynos_drm_gem *exynos_gem = to_exynos_gem(obj);
 	int ret;
diff --git a/drivers/gpu/drm/gma500/fbdev.c b/drivers/gpu/drm/gma500/fbdev.c
index 8edefea2ef59..57ff0f19937d 100644
--- a/drivers/gpu/drm/gma500/fbdev.c
+++ b/drivers/gpu/drm/gma500/fbdev.c
@@ -22,7 +22,7 @@
 
 static vm_fault_t psb_fbdev_vm_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct fb_info *info = vma->vm_private_data;
 	unsigned long address = vmf->address - (vmf->pgoff << PAGE_SHIFT);
 	unsigned long pfn = info->fix.smem_start >> PAGE_SHIFT;
@@ -93,7 +93,7 @@ static int psb_fbdev_fb_setcolreg(unsigned int regno,
 	return 0;
 }
 
-static int psb_fbdev_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int psb_fbdev_fb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	if (vma->vm_pgoff != 0)
 		return -EINVAL;
diff --git a/drivers/gpu/drm/gma500/gem.c b/drivers/gpu/drm/gma500/gem.c
index 4b7627a72637..b458c86773dd 100644
--- a/drivers/gpu/drm/gma500/gem.c
+++ b/drivers/gpu/drm/gma500/gem.c
@@ -253,7 +253,7 @@ int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev,
  */
 static vm_fault_t psb_gem_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct drm_gem_object *obj;
 	struct psb_gem_object *pobj;
 	int err;
diff --git a/drivers/gpu/drm/i915/display/intel_bo.c b/drivers/gpu/drm/i915/display/intel_bo.c
index fbd16d7b58d9..b193ee0f7171 100644
--- a/drivers/gpu/drm/i915/display/intel_bo.c
+++ b/drivers/gpu/drm/i915/display/intel_bo.c
@@ -32,7 +32,7 @@ void intel_bo_flush_if_display(struct drm_gem_object *obj)
 	i915_gem_object_flush_if_display(to_intel_bo(obj));
 }
 
-int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+int intel_bo_fb_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	return i915_gem_fb_mmap(to_intel_bo(obj), vma);
 }
diff --git a/drivers/gpu/drm/i915/display/intel_bo.h b/drivers/gpu/drm/i915/display/intel_bo.h
index ea7a2253aaa5..38f3518bb80f 100644
--- a/drivers/gpu/drm/i915/display/intel_bo.h
+++ b/drivers/gpu/drm/i915/display/intel_bo.h
@@ -8,14 +8,14 @@
 
 struct drm_gem_object;
 struct seq_file;
-struct vm_area_struct;
+struct mm_area;
 
 bool intel_bo_is_tiled(struct drm_gem_object *obj);
 bool intel_bo_is_userptr(struct drm_gem_object *obj);
 bool intel_bo_is_shmem(struct drm_gem_object *obj);
 bool intel_bo_is_protected(struct drm_gem_object *obj);
 void intel_bo_flush_if_display(struct drm_gem_object *obj);
-int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
+int intel_bo_fb_mmap(struct drm_gem_object *obj, struct mm_area *vma);
 int intel_bo_read_from_page(struct drm_gem_object *obj, u64 offset, void *dst, int size);
 
 struct intel_frontbuffer *intel_bo_get_frontbuffer(struct drm_gem_object *obj);
diff --git a/drivers/gpu/drm/i915/display/intel_fbdev.c b/drivers/gpu/drm/i915/display/intel_fbdev.c
index adc19d5607de..69ade9a6ca90 100644
--- a/drivers/gpu/drm/i915/display/intel_fbdev.c
+++ b/drivers/gpu/drm/i915/display/intel_fbdev.c
@@ -121,7 +121,7 @@ static int intel_fbdev_pan_display(struct fb_var_screeninfo *var,
 	return ret;
 }
 
-static int intel_fbdev_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int intel_fbdev_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct drm_fb_helper *fb_helper = info->par;
 	struct drm_gem_object *obj = drm_gem_fb_get_obj(fb_helper->fb, 0);
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c b/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c
index 9473050ac842..2caf031bfbc1 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c
@@ -91,7 +91,7 @@ static void i915_gem_dmabuf_vunmap(struct dma_buf *dma_buf,
 	i915_gem_object_unpin_map(obj);
 }
 
-static int i915_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma)
+static int i915_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct mm_area *vma)
 {
 	struct drm_i915_gem_object *obj = dma_buf_to_obj(dma_buf);
 	struct drm_i915_private *i915 = to_i915(obj->base.dev);
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
index c3dabb857960..9fcb86c991fd 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_mman.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.c
@@ -27,7 +27,7 @@
 #include "i915_vma.h"
 
 static inline bool
-__vma_matches(struct vm_area_struct *vma, struct file *filp,
+__vma_matches(struct mm_area *vma, struct file *filp,
 	      unsigned long addr, unsigned long size)
 {
 	if (vma->vm_file != filp)
@@ -104,7 +104,7 @@ i915_gem_mmap_ioctl(struct drm_device *dev, void *data,
 
 	if (args->flags & I915_MMAP_WC) {
 		struct mm_struct *mm = current->mm;
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 
 		if (mmap_write_lock_killable(mm)) {
 			addr = -EINTR;
@@ -252,7 +252,7 @@ static vm_fault_t i915_error_to_vmf_fault(int err)
 
 static vm_fault_t vm_fault_cpu(struct vm_fault *vmf)
 {
-	struct vm_area_struct *area = vmf->vma;
+	struct mm_area *area = vmf->vma;
 	struct i915_mmap_offset *mmo = area->vm_private_data;
 	struct drm_i915_gem_object *obj = mmo->obj;
 	unsigned long obj_offset;
@@ -295,7 +295,7 @@ static vm_fault_t vm_fault_cpu(struct vm_fault *vmf)
 	return i915_error_to_vmf_fault(err);
 }
 
-static void set_address_limits(struct vm_area_struct *area,
+static void set_address_limits(struct mm_area *area,
 			       struct i915_vma *vma,
 			       unsigned long obj_offset,
 			       resource_size_t gmadr_start,
@@ -339,7 +339,7 @@ static void set_address_limits(struct vm_area_struct *area,
 static vm_fault_t vm_fault_gtt(struct vm_fault *vmf)
 {
 #define MIN_CHUNK_PAGES (SZ_1M >> PAGE_SHIFT)
-	struct vm_area_struct *area = vmf->vma;
+	struct mm_area *area = vmf->vma;
 	struct i915_mmap_offset *mmo = area->vm_private_data;
 	struct drm_i915_gem_object *obj = mmo->obj;
 	struct drm_device *dev = obj->base.dev;
@@ -506,7 +506,7 @@ static vm_fault_t vm_fault_gtt(struct vm_fault *vmf)
 }
 
 static int
-vm_access(struct vm_area_struct *area, unsigned long addr,
+vm_access(struct mm_area *area, unsigned long addr,
 	  void *buf, int len, int write)
 {
 	struct i915_mmap_offset *mmo = area->vm_private_data;
@@ -919,7 +919,7 @@ i915_gem_mmap_offset_ioctl(struct drm_device *dev, void *data,
 	return __assign_mmap_offset_handle(file, args->handle, type, &args->offset);
 }
 
-static void vm_open(struct vm_area_struct *vma)
+static void vm_open(struct mm_area *vma)
 {
 	struct i915_mmap_offset *mmo = vma->vm_private_data;
 	struct drm_i915_gem_object *obj = mmo->obj;
@@ -928,7 +928,7 @@ static void vm_open(struct vm_area_struct *vma)
 	i915_gem_object_get(obj);
 }
 
-static void vm_close(struct vm_area_struct *vma)
+static void vm_close(struct mm_area *vma)
 {
 	struct i915_mmap_offset *mmo = vma->vm_private_data;
 	struct drm_i915_gem_object *obj = mmo->obj;
@@ -990,7 +990,7 @@ static struct file *mmap_singleton(struct drm_i915_private *i915)
 static int
 i915_gem_object_mmap(struct drm_i915_gem_object *obj,
 		     struct i915_mmap_offset *mmo,
-		     struct vm_area_struct *vma)
+		     struct mm_area *vma)
 {
 	struct drm_i915_private *i915 = to_i915(obj->base.dev);
 	struct drm_device *dev = &i915->drm;
@@ -1071,7 +1071,7 @@ i915_gem_object_mmap(struct drm_i915_gem_object *obj,
  * be able to resolve multiple mmap offsets which could be tied
  * to a single gem object.
  */
-int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma)
+int i915_gem_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct drm_vma_offset_node *node;
 	struct drm_file *priv = filp->private_data;
@@ -1114,7 +1114,7 @@ int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma)
 	return i915_gem_object_mmap(obj, mmo, vma);
 }
 
-int i915_gem_fb_mmap(struct drm_i915_gem_object *obj, struct vm_area_struct *vma)
+int i915_gem_fb_mmap(struct drm_i915_gem_object *obj, struct mm_area *vma)
 {
 	struct drm_i915_private *i915 = to_i915(obj->base.dev);
 	struct drm_device *dev = &i915->drm;
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_mman.h b/drivers/gpu/drm/i915/gem/i915_gem_mman.h
index 196417fd0f5c..5e6faa37dbc2 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_mman.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_mman.h
@@ -18,7 +18,7 @@ struct i915_mmap_offset;
 struct mutex;
 
 int i915_gem_mmap_gtt_version(void);
-int i915_gem_mmap(struct file *filp, struct vm_area_struct *vma);
+int i915_gem_mmap(struct file *filp, struct mm_area *vma);
 
 int i915_gem_dumb_mmap_offset(struct drm_file *file_priv,
 			      struct drm_device *dev,
@@ -29,5 +29,5 @@ void i915_gem_object_release_mmap_gtt(struct drm_i915_gem_object *obj);
 
 void i915_gem_object_runtime_pm_release_mmap_offset(struct drm_i915_gem_object *obj);
 void i915_gem_object_release_mmap_offset(struct drm_i915_gem_object *obj);
-int i915_gem_fb_mmap(struct drm_i915_gem_object *obj, struct vm_area_struct *vma);
+int i915_gem_fb_mmap(struct drm_i915_gem_object *obj, struct mm_area *vma);
 #endif
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
index 1f4814968868..b65ee3c4c4fc 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm.c
@@ -1034,7 +1034,7 @@ static void i915_ttm_delayed_free(struct drm_i915_gem_object *obj)
 
 static vm_fault_t vm_fault_ttm(struct vm_fault *vmf)
 {
-	struct vm_area_struct *area = vmf->vma;
+	struct mm_area *area = vmf->vma;
 	struct ttm_buffer_object *bo = area->vm_private_data;
 	struct drm_device *dev = bo->base.dev;
 	struct drm_i915_gem_object *obj = i915_ttm_to_gem(bo);
@@ -1147,7 +1147,7 @@ static vm_fault_t vm_fault_ttm(struct vm_fault *vmf)
 }
 
 static int
-vm_access_ttm(struct vm_area_struct *area, unsigned long addr,
+vm_access_ttm(struct mm_area *area, unsigned long addr,
 	      void *buf, int len, int write)
 {
 	struct drm_i915_gem_object *obj =
@@ -1159,7 +1159,7 @@ vm_access_ttm(struct vm_area_struct *area, unsigned long addr,
 	return ttm_bo_vm_access(area, addr, buf, len, write);
 }
 
-static void ttm_vm_open(struct vm_area_struct *vma)
+static void ttm_vm_open(struct mm_area *vma)
 {
 	struct drm_i915_gem_object *obj =
 		i915_ttm_to_gem(vma->vm_private_data);
@@ -1168,7 +1168,7 @@ static void ttm_vm_open(struct vm_area_struct *vma)
 	i915_gem_object_get(obj);
 }
 
-static void ttm_vm_close(struct vm_area_struct *vma)
+static void ttm_vm_close(struct mm_area *vma)
 {
 	struct drm_i915_gem_object *obj =
 		i915_ttm_to_gem(vma->vm_private_data);
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
index 09b68713ab32..a3badd817b6b 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_userptr.c
@@ -401,7 +401,7 @@ static int
 probe_range(struct mm_struct *mm, unsigned long addr, unsigned long len)
 {
 	VMA_ITERATOR(vmi, mm, addr);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long end = addr + len;
 
 	mmap_read_lock(mm);
diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
index 804f74084bd4..c0a2c9bed6da 100644
--- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
+++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
@@ -896,7 +896,7 @@ static int __igt_mmap(struct drm_i915_private *i915,
 		      struct drm_i915_gem_object *obj,
 		      enum i915_mmap_type type)
 {
-	struct vm_area_struct *area;
+	struct mm_area *area;
 	unsigned long addr;
 	int err, i;
 	u64 offset;
@@ -924,7 +924,7 @@ static int __igt_mmap(struct drm_i915_private *i915,
 	area = vma_lookup(current->mm, addr);
 	mmap_read_unlock(current->mm);
 	if (!area) {
-		pr_err("%s: Did not create a vm_area_struct for the mmap\n",
+		pr_err("%s: Did not create a mm_area for the mmap\n",
 		       obj->mm.region->name);
 		err = -EINVAL;
 		goto out_unmap;
@@ -1096,7 +1096,7 @@ static int ___igt_mmap_migrate(struct drm_i915_private *i915,
 			       unsigned long addr,
 			       bool unfaultable)
 {
-	struct vm_area_struct *area;
+	struct mm_area *area;
 	int err = 0, i;
 
 	pr_info("igt_mmap(%s, %d) @ %lx\n",
@@ -1106,7 +1106,7 @@ static int ___igt_mmap_migrate(struct drm_i915_private *i915,
 	area = vma_lookup(current->mm, addr);
 	mmap_read_unlock(current->mm);
 	if (!area) {
-		pr_err("%s: Did not create a vm_area_struct for the mmap\n",
+		pr_err("%s: Did not create a mm_area for the mmap\n",
 		       obj->mm.region->name);
 		err = -EINVAL;
 		goto out_unmap;
diff --git a/drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c b/drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
index 5cd58e0f0dcf..11140801f804 100644
--- a/drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
+++ b/drivers/gpu/drm/i915/gem/selftests/mock_dmabuf.c
@@ -82,7 +82,7 @@ static void mock_dmabuf_vunmap(struct dma_buf *dma_buf, struct iosys_map *map)
 	vm_unmap_ram(map->vaddr, mock->npages);
 }
 
-static int mock_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma)
+static int mock_dmabuf_mmap(struct dma_buf *dma_buf, struct mm_area *vma)
 {
 	return -ENODEV;
 }
diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c
index 69830a5c49d3..8f4cc972a94c 100644
--- a/drivers/gpu/drm/i915/gvt/kvmgt.c
+++ b/drivers/gpu/drm/i915/gvt/kvmgt.c
@@ -1011,7 +1011,7 @@ static ssize_t intel_vgpu_write(struct vfio_device *vfio_dev,
 }
 
 static int intel_vgpu_mmap(struct vfio_device *vfio_dev,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	struct intel_vgpu *vgpu = vfio_dev_to_vgpu(vfio_dev);
 	unsigned int index;
diff --git a/drivers/gpu/drm/i915/i915_mm.c b/drivers/gpu/drm/i915/i915_mm.c
index 76e2801619f0..d92cf85a65cf 100644
--- a/drivers/gpu/drm/i915/i915_mm.c
+++ b/drivers/gpu/drm/i915/i915_mm.c
@@ -91,7 +91,7 @@ static int remap_pfn(pte_t *pte, unsigned long addr, void *data)
  *
  *  Note: this is only safe if the mm semaphore is held when called.
  */
-int remap_io_mapping(struct vm_area_struct *vma,
+int remap_io_mapping(struct mm_area *vma,
 		     unsigned long addr, unsigned long pfn, unsigned long size,
 		     struct io_mapping *iomap)
 {
@@ -127,7 +127,7 @@ int remap_io_mapping(struct vm_area_struct *vma,
  *
  *  Note: this is only safe if the mm semaphore is held when called.
  */
-int remap_io_sg(struct vm_area_struct *vma,
+int remap_io_sg(struct mm_area *vma,
 		unsigned long addr, unsigned long size,
 		struct scatterlist *sgl, unsigned long offset,
 		resource_size_t iobase)
diff --git a/drivers/gpu/drm/i915/i915_mm.h b/drivers/gpu/drm/i915/i915_mm.h
index 69f9351b1a1c..0ba12093b9ed 100644
--- a/drivers/gpu/drm/i915/i915_mm.h
+++ b/drivers/gpu/drm/i915/i915_mm.h
@@ -9,17 +9,17 @@
 #include <linux/bug.h>
 #include <linux/types.h>
 
-struct vm_area_struct;
+struct mm_area;
 struct io_mapping;
 struct scatterlist;
 
 #if IS_ENABLED(CONFIG_X86)
-int remap_io_mapping(struct vm_area_struct *vma,
+int remap_io_mapping(struct mm_area *vma,
 		     unsigned long addr, unsigned long pfn, unsigned long size,
 		     struct io_mapping *iomap);
 #else
 static inline
-int remap_io_mapping(struct vm_area_struct *vma,
+int remap_io_mapping(struct mm_area *vma,
 		     unsigned long addr, unsigned long pfn, unsigned long size,
 		     struct io_mapping *iomap)
 {
@@ -28,7 +28,7 @@ int remap_io_mapping(struct vm_area_struct *vma,
 }
 #endif
 
-int remap_io_sg(struct vm_area_struct *vma,
+int remap_io_sg(struct mm_area *vma,
 		unsigned long addr, unsigned long size,
 		struct scatterlist *sgl, unsigned long offset,
 		resource_size_t iobase);
diff --git a/drivers/gpu/drm/imagination/pvr_gem.c b/drivers/gpu/drm/imagination/pvr_gem.c
index 6a8c81fe8c1e..b89482468e95 100644
--- a/drivers/gpu/drm/imagination/pvr_gem.c
+++ b/drivers/gpu/drm/imagination/pvr_gem.c
@@ -27,7 +27,7 @@ static void pvr_gem_object_free(struct drm_gem_object *obj)
 	drm_gem_shmem_object_free(obj);
 }
 
-static int pvr_gem_mmap(struct drm_gem_object *gem_obj, struct vm_area_struct *vma)
+static int pvr_gem_mmap(struct drm_gem_object *gem_obj, struct mm_area *vma)
 {
 	struct pvr_gem_object *pvr_obj = gem_to_pvr_gem(gem_obj);
 	struct drm_gem_shmem_object *shmem_obj = shmem_gem_from_pvr_gem(pvr_obj);
diff --git a/drivers/gpu/drm/lima/lima_gem.c b/drivers/gpu/drm/lima/lima_gem.c
index 9bb997dbb4b9..236327d428cd 100644
--- a/drivers/gpu/drm/lima/lima_gem.c
+++ b/drivers/gpu/drm/lima/lima_gem.c
@@ -198,7 +198,7 @@ static int lima_gem_vmap(struct drm_gem_object *obj, struct iosys_map *map)
 	return drm_gem_shmem_vmap(&bo->base, map);
 }
 
-static int lima_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int lima_gem_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct lima_bo *bo = to_lima_bo(obj);
 
diff --git a/drivers/gpu/drm/lima/lima_gem.h b/drivers/gpu/drm/lima/lima_gem.h
index ccea06142f4b..2dc229d7a747 100644
--- a/drivers/gpu/drm/lima/lima_gem.h
+++ b/drivers/gpu/drm/lima/lima_gem.h
@@ -42,6 +42,6 @@ int lima_gem_get_info(struct drm_file *file, u32 handle, u32 *va, u64 *offset);
 int lima_gem_submit(struct drm_file *file, struct lima_submit *submit);
 int lima_gem_wait(struct drm_file *file, u32 handle, u32 op, s64 timeout_ns);
 
-void lima_set_vma_flags(struct vm_area_struct *vma);
+void lima_set_vma_flags(struct mm_area *vma);
 
 #endif
diff --git a/drivers/gpu/drm/loongson/lsdc_gem.c b/drivers/gpu/drm/loongson/lsdc_gem.c
index a720d8f53209..21d13a9acde5 100644
--- a/drivers/gpu/drm/loongson/lsdc_gem.c
+++ b/drivers/gpu/drm/loongson/lsdc_gem.c
@@ -110,7 +110,7 @@ static void lsdc_gem_object_vunmap(struct drm_gem_object *obj, struct iosys_map
 	}
 }
 
-static int lsdc_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int lsdc_gem_object_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct ttm_buffer_object *tbo = to_ttm_bo(obj);
 	int ret;
diff --git a/drivers/gpu/drm/mediatek/mtk_gem.c b/drivers/gpu/drm/mediatek/mtk_gem.c
index a172456d1d7b..254a991e94b2 100644
--- a/drivers/gpu/drm/mediatek/mtk_gem.c
+++ b/drivers/gpu/drm/mediatek/mtk_gem.c
@@ -15,7 +15,7 @@
 #include "mtk_drm_drv.h"
 #include "mtk_gem.h"
 
-static int mtk_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
+static int mtk_gem_object_mmap(struct drm_gem_object *obj, struct mm_area *vma);
 
 static const struct vm_operations_struct vm_ops = {
 	.open = drm_gem_vm_open,
@@ -157,7 +157,7 @@ int mtk_gem_dumb_create(struct drm_file *file_priv, struct drm_device *dev,
 }
 
 static int mtk_gem_object_mmap(struct drm_gem_object *obj,
-			       struct vm_area_struct *vma)
+			       struct mm_area *vma)
 
 {
 	int ret;
diff --git a/drivers/gpu/drm/msm/msm_fbdev.c b/drivers/gpu/drm/msm/msm_fbdev.c
index c62249b1ab3d..058585d17be3 100644
--- a/drivers/gpu/drm/msm/msm_fbdev.c
+++ b/drivers/gpu/drm/msm/msm_fbdev.c
@@ -29,7 +29,7 @@ FB_GEN_DEFAULT_DEFERRED_SYSMEM_OPS(msm_fbdev,
 				   drm_fb_helper_damage_range,
 				   drm_fb_helper_damage_area)
 
-static int msm_fbdev_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int msm_fbdev_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct drm_fb_helper *helper = (struct drm_fb_helper *)info->par;
 	struct drm_gem_object *bo = msm_framebuffer_bo(helper->fb, 0);
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
index ebc9ba66efb8..4564662c845c 100644
--- a/drivers/gpu/drm/msm/msm_gem.c
+++ b/drivers/gpu/drm/msm/msm_gem.c
@@ -321,7 +321,7 @@ static pgprot_t msm_gem_pgprot(struct msm_gem_object *msm_obj, pgprot_t prot)
 
 static vm_fault_t msm_gem_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct drm_gem_object *obj = vma->vm_private_data;
 	struct msm_gem_object *msm_obj = to_msm_bo(obj);
 	struct page **pages;
@@ -1097,7 +1097,7 @@ static void msm_gem_free_object(struct drm_gem_object *obj)
 	kfree(msm_obj);
 }
 
-static int msm_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int msm_gem_object_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct msm_gem_object *msm_obj = to_msm_bo(obj);
 
diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.c b/drivers/gpu/drm/nouveau/nouveau_dmem.c
index 61d0f411ef84..4dd166e36cfe 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dmem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_dmem.c
@@ -691,7 +691,7 @@ static void nouveau_dmem_migrate_chunk(struct nouveau_drm *drm,
 int
 nouveau_dmem_migrate_vma(struct nouveau_drm *drm,
 			 struct nouveau_svmm *svmm,
-			 struct vm_area_struct *vma,
+			 struct mm_area *vma,
 			 unsigned long start,
 			 unsigned long end)
 {
diff --git a/drivers/gpu/drm/nouveau/nouveau_dmem.h b/drivers/gpu/drm/nouveau/nouveau_dmem.h
index 64da5d3635c8..c52336b7729f 100644
--- a/drivers/gpu/drm/nouveau/nouveau_dmem.h
+++ b/drivers/gpu/drm/nouveau/nouveau_dmem.h
@@ -36,7 +36,7 @@ void nouveau_dmem_resume(struct nouveau_drm *);
 
 int nouveau_dmem_migrate_vma(struct nouveau_drm *drm,
 			     struct nouveau_svmm *svmm,
-			     struct vm_area_struct *vma,
+			     struct mm_area *vma,
 			     unsigned long start,
 			     unsigned long end);
 unsigned long nouveau_dmem_page_addr(struct page *page);
diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
index 67e3c99de73a..db3fe08c1ee6 100644
--- a/drivers/gpu/drm/nouveau/nouveau_gem.c
+++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
@@ -41,7 +41,7 @@
 
 static vm_fault_t nouveau_ttm_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct ttm_buffer_object *bo = vma->vm_private_data;
 	pgprot_t prot;
 	vm_fault_t ret;
diff --git a/drivers/gpu/drm/nouveau/nouveau_svm.c b/drivers/gpu/drm/nouveau/nouveau_svm.c
index e12e2596ed84..43e5f70f664e 100644
--- a/drivers/gpu/drm/nouveau/nouveau_svm.c
+++ b/drivers/gpu/drm/nouveau/nouveau_svm.c
@@ -173,7 +173,7 @@ nouveau_svmm_bind(struct drm_device *dev, void *data,
 	}
 
 	for (addr = args->va_start, end = args->va_end; addr < end;) {
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 		unsigned long next;
 
 		vma = find_vma_intersection(mm, addr, end);
diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.c b/drivers/gpu/drm/omapdrm/omap_fbdev.c
index 7b6396890681..5a1818a59244 100644
--- a/drivers/gpu/drm/omapdrm/omap_fbdev.c
+++ b/drivers/gpu/drm/omapdrm/omap_fbdev.c
@@ -81,7 +81,7 @@ static int omap_fbdev_pan_display(struct fb_var_screeninfo *var, struct fb_info
 	return drm_fb_helper_pan_display(var, fbi);
 }
 
-static int omap_fbdev_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int omap_fbdev_fb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	vma->vm_page_prot = pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
 
diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c b/drivers/gpu/drm/omapdrm/omap_gem.c
index b9c67e4ca360..cbbdaf381ad3 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem.c
+++ b/drivers/gpu/drm/omapdrm/omap_gem.c
@@ -351,7 +351,7 @@ size_t omap_gem_mmap_size(struct drm_gem_object *obj)
 
 /* Normal handling for the case of faulting in non-tiled buffers */
 static vm_fault_t omap_gem_fault_1d(struct drm_gem_object *obj,
-		struct vm_area_struct *vma, struct vm_fault *vmf)
+		struct mm_area *vma, struct vm_fault *vmf)
 {
 	struct omap_gem_object *omap_obj = to_omap_bo(obj);
 	unsigned long pfn;
@@ -377,7 +377,7 @@ static vm_fault_t omap_gem_fault_1d(struct drm_gem_object *obj,
 
 /* Special handling for the case of faulting in 2d tiled buffers */
 static vm_fault_t omap_gem_fault_2d(struct drm_gem_object *obj,
-		struct vm_area_struct *vma, struct vm_fault *vmf)
+		struct mm_area *vma, struct vm_fault *vmf)
 {
 	struct omap_gem_object *omap_obj = to_omap_bo(obj);
 	struct omap_drm_private *priv = obj->dev->dev_private;
@@ -496,7 +496,7 @@ static vm_fault_t omap_gem_fault_2d(struct drm_gem_object *obj,
  */
 static vm_fault_t omap_gem_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct drm_gem_object *obj = vma->vm_private_data;
 	struct omap_gem_object *omap_obj = to_omap_bo(obj);
 	int err;
@@ -531,7 +531,7 @@ static vm_fault_t omap_gem_fault(struct vm_fault *vmf)
 	return ret;
 }
 
-static int omap_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int omap_gem_object_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct omap_gem_object *omap_obj = to_omap_bo(obj);
 
diff --git a/drivers/gpu/drm/omapdrm/omap_gem.h b/drivers/gpu/drm/omapdrm/omap_gem.h
index fec3fa0e4c33..d28793a23d46 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem.h
+++ b/drivers/gpu/drm/omapdrm/omap_gem.h
@@ -23,7 +23,7 @@ struct file;
 struct list_head;
 struct page;
 struct seq_file;
-struct vm_area_struct;
+struct mm_area;
 struct vm_fault;
 
 union omap_gem_size;
diff --git a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
index 30cf1cdc1aa3..64d9520d20c0 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
+++ b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
@@ -61,7 +61,7 @@ static int omap_gem_dmabuf_end_cpu_access(struct dma_buf *buffer,
 }
 
 static int omap_gem_dmabuf_mmap(struct dma_buf *buffer,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	struct drm_gem_object *obj = buffer->priv;
 
diff --git a/drivers/gpu/drm/panthor/panthor_device.c b/drivers/gpu/drm/panthor/panthor_device.c
index a9da1d1eeb70..c3092cf8f280 100644
--- a/drivers/gpu/drm/panthor/panthor_device.c
+++ b/drivers/gpu/drm/panthor/panthor_device.c
@@ -359,7 +359,7 @@ const char *panthor_exception_name(struct panthor_device *ptdev, u32 exception_c
 
 static vm_fault_t panthor_mmio_vm_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct panthor_device *ptdev = vma->vm_private_data;
 	u64 offset = (u64)vma->vm_pgoff << PAGE_SHIFT;
 	unsigned long pfn;
@@ -403,7 +403,7 @@ static const struct vm_operations_struct panthor_mmio_vm_ops = {
 	.fault = panthor_mmio_vm_fault,
 };
 
-int panthor_device_mmap_io(struct panthor_device *ptdev, struct vm_area_struct *vma)
+int panthor_device_mmap_io(struct panthor_device *ptdev, struct mm_area *vma)
 {
 	u64 offset = (u64)vma->vm_pgoff << PAGE_SHIFT;
 
diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/panthor/panthor_device.h
index da6574021664..a3205e6b0518 100644
--- a/drivers/gpu/drm/panthor/panthor_device.h
+++ b/drivers/gpu/drm/panthor/panthor_device.h
@@ -253,7 +253,7 @@ static inline bool panthor_device_reset_is_pending(struct panthor_device *ptdev)
 }
 
 int panthor_device_mmap_io(struct panthor_device *ptdev,
-			   struct vm_area_struct *vma);
+			   struct mm_area *vma);
 
 int panthor_device_resume(struct device *dev);
 int panthor_device_suspend(struct device *dev);
diff --git a/drivers/gpu/drm/panthor/panthor_drv.c b/drivers/gpu/drm/panthor/panthor_drv.c
index 06fe46e32073..3fca24a494d4 100644
--- a/drivers/gpu/drm/panthor/panthor_drv.c
+++ b/drivers/gpu/drm/panthor/panthor_drv.c
@@ -1402,7 +1402,7 @@ static const struct drm_ioctl_desc panthor_drm_driver_ioctls[] = {
 	PANTHOR_IOCTL(GROUP_SUBMIT, group_submit, DRM_RENDER_ALLOW),
 };
 
-static int panthor_mmap(struct file *filp, struct vm_area_struct *vma)
+static int panthor_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct drm_file *file = filp->private_data;
 	struct panthor_file *pfile = file->driver_priv;
diff --git a/drivers/gpu/drm/panthor/panthor_gem.c b/drivers/gpu/drm/panthor/panthor_gem.c
index 8244a4e6c2a2..a323f6580f9c 100644
--- a/drivers/gpu/drm/panthor/panthor_gem.c
+++ b/drivers/gpu/drm/panthor/panthor_gem.c
@@ -129,7 +129,7 @@ panthor_kernel_bo_create(struct panthor_device *ptdev, struct panthor_vm *vm,
 	return ERR_PTR(ret);
 }
 
-static int panthor_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int panthor_gem_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct panthor_gem_object *bo = to_panthor_bo(obj);
 
diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c
index f86773f3db20..83230ce4e4f3 100644
--- a/drivers/gpu/drm/radeon/radeon_gem.c
+++ b/drivers/gpu/drm/radeon/radeon_gem.c
@@ -263,7 +263,7 @@ static int radeon_gem_handle_lockup(struct radeon_device *rdev, int r)
 	return r;
 }
 
-static int radeon_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int radeon_gem_object_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct radeon_bo *bo = gem_to_radeon_bo(obj);
 	struct radeon_device *rdev = radeon_get_rdev(bo->tbo.bdev);
diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
index 616d25c8c2de..a9007d171911 100644
--- a/drivers/gpu/drm/radeon/radeon_ttm.c
+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
@@ -338,7 +338,7 @@ static int radeon_ttm_tt_pin_userptr(struct ttm_device *bdev, struct ttm_tt *ttm
 		/* check that we only pin down anonymous memory
 		   to prevent problems with writeback */
 		unsigned long end = gtt->userptr + (u64)ttm->num_pages * PAGE_SIZE;
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 		vma = find_vma(gtt->usermm, gtt->userptr);
 		if (!vma || vma->vm_file || vma->vm_end < end)
 			return -EPERM;
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
index 6330b883efc3..f35e43ef35c0 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c
@@ -213,7 +213,7 @@ static void rockchip_gem_free_buf(struct rockchip_gem_object *rk_obj)
 }
 
 static int rockchip_drm_gem_object_mmap_iommu(struct drm_gem_object *obj,
-					      struct vm_area_struct *vma)
+					      struct mm_area *vma)
 {
 	struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj);
 	unsigned int count = obj->size >> PAGE_SHIFT;
@@ -226,7 +226,7 @@ static int rockchip_drm_gem_object_mmap_iommu(struct drm_gem_object *obj,
 }
 
 static int rockchip_drm_gem_object_mmap_dma(struct drm_gem_object *obj,
-					    struct vm_area_struct *vma)
+					    struct mm_area *vma)
 {
 	struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj);
 	struct drm_device *drm = obj->dev;
@@ -236,7 +236,7 @@ static int rockchip_drm_gem_object_mmap_dma(struct drm_gem_object *obj,
 }
 
 static int rockchip_drm_gem_object_mmap(struct drm_gem_object *obj,
-					struct vm_area_struct *vma)
+					struct mm_area *vma)
 {
 	int ret;
 	struct rockchip_gem_object *rk_obj = to_rockchip_obj(obj);
diff --git a/drivers/gpu/drm/tegra/fbdev.c b/drivers/gpu/drm/tegra/fbdev.c
index cd9d798f8870..bb7d18a7ee7c 100644
--- a/drivers/gpu/drm/tegra/fbdev.c
+++ b/drivers/gpu/drm/tegra/fbdev.c
@@ -22,7 +22,7 @@
 #include "drm.h"
 #include "gem.h"
 
-static int tegra_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int tegra_fb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct drm_fb_helper *helper = info->par;
 	struct tegra_bo *bo;
diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c
index ace3e5a805cf..8c8233eeeaf9 100644
--- a/drivers/gpu/drm/tegra/gem.c
+++ b/drivers/gpu/drm/tegra/gem.c
@@ -560,7 +560,7 @@ int tegra_bo_dumb_create(struct drm_file *file, struct drm_device *drm,
 
 static vm_fault_t tegra_bo_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct drm_gem_object *gem = vma->vm_private_data;
 	struct tegra_bo *bo = to_tegra_bo(gem);
 	struct page *page;
@@ -581,7 +581,7 @@ const struct vm_operations_struct tegra_bo_vm_ops = {
 	.close = drm_gem_vm_close,
 };
 
-int __tegra_gem_mmap(struct drm_gem_object *gem, struct vm_area_struct *vma)
+int __tegra_gem_mmap(struct drm_gem_object *gem, struct mm_area *vma)
 {
 	struct tegra_bo *bo = to_tegra_bo(gem);
 
@@ -616,7 +616,7 @@ int __tegra_gem_mmap(struct drm_gem_object *gem, struct vm_area_struct *vma)
 	return 0;
 }
 
-int tegra_drm_mmap(struct file *file, struct vm_area_struct *vma)
+int tegra_drm_mmap(struct file *file, struct mm_area *vma)
 {
 	struct drm_gem_object *gem;
 	int err;
@@ -708,7 +708,7 @@ static int tegra_gem_prime_end_cpu_access(struct dma_buf *buf,
 	return 0;
 }
 
-static int tegra_gem_prime_mmap(struct dma_buf *buf, struct vm_area_struct *vma)
+static int tegra_gem_prime_mmap(struct dma_buf *buf, struct mm_area *vma)
 {
 	struct drm_gem_object *gem = buf->priv;
 	int err;
diff --git a/drivers/gpu/drm/tegra/gem.h b/drivers/gpu/drm/tegra/gem.h
index bf2cbd48eb3f..ca8e8a5e3335 100644
--- a/drivers/gpu/drm/tegra/gem.h
+++ b/drivers/gpu/drm/tegra/gem.h
@@ -93,8 +93,8 @@ int tegra_bo_dumb_create(struct drm_file *file, struct drm_device *drm,
 
 extern const struct vm_operations_struct tegra_bo_vm_ops;
 
-int __tegra_gem_mmap(struct drm_gem_object *gem, struct vm_area_struct *vma);
-int tegra_drm_mmap(struct file *file, struct vm_area_struct *vma);
+int __tegra_gem_mmap(struct drm_gem_object *gem, struct mm_area *vma);
+int tegra_drm_mmap(struct file *file, struct mm_area *vma);
 
 struct dma_buf *tegra_gem_prime_export(struct drm_gem_object *gem,
 				       int flags);
diff --git a/drivers/gpu/drm/ttm/ttm_bo_vm.c b/drivers/gpu/drm/ttm/ttm_bo_vm.c
index a194db83421d..4139e029b35f 100644
--- a/drivers/gpu/drm/ttm/ttm_bo_vm.c
+++ b/drivers/gpu/drm/ttm/ttm_bo_vm.c
@@ -182,7 +182,7 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf,
 				    pgprot_t prot,
 				    pgoff_t num_prefault)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct ttm_buffer_object *bo = vma->vm_private_data;
 	struct ttm_device *bdev = bo->bdev;
 	unsigned long page_offset;
@@ -290,7 +290,7 @@ static void ttm_bo_release_dummy_page(struct drm_device *dev, void *res)
 
 vm_fault_t ttm_bo_vm_dummy_page(struct vm_fault *vmf, pgprot_t prot)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct ttm_buffer_object *bo = vma->vm_private_data;
 	struct drm_device *ddev = bo->base.dev;
 	vm_fault_t ret = VM_FAULT_NOPAGE;
@@ -320,7 +320,7 @@ EXPORT_SYMBOL(ttm_bo_vm_dummy_page);
 
 vm_fault_t ttm_bo_vm_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	pgprot_t prot;
 	struct ttm_buffer_object *bo = vma->vm_private_data;
 	struct drm_device *ddev = bo->base.dev;
@@ -347,7 +347,7 @@ vm_fault_t ttm_bo_vm_fault(struct vm_fault *vmf)
 }
 EXPORT_SYMBOL(ttm_bo_vm_fault);
 
-void ttm_bo_vm_open(struct vm_area_struct *vma)
+void ttm_bo_vm_open(struct mm_area *vma)
 {
 	struct ttm_buffer_object *bo = vma->vm_private_data;
 
@@ -357,7 +357,7 @@ void ttm_bo_vm_open(struct vm_area_struct *vma)
 }
 EXPORT_SYMBOL(ttm_bo_vm_open);
 
-void ttm_bo_vm_close(struct vm_area_struct *vma)
+void ttm_bo_vm_close(struct mm_area *vma)
 {
 	struct ttm_buffer_object *bo = vma->vm_private_data;
 
@@ -453,7 +453,7 @@ int ttm_bo_access(struct ttm_buffer_object *bo, unsigned long offset,
 }
 EXPORT_SYMBOL(ttm_bo_access);
 
-int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,
+int ttm_bo_vm_access(struct mm_area *vma, unsigned long addr,
 		     void *buf, int len, int write)
 {
 	struct ttm_buffer_object *bo = vma->vm_private_data;
@@ -480,7 +480,7 @@ static const struct vm_operations_struct ttm_bo_vm_ops = {
  *
  * Maps a buffer object.
  */
-int ttm_bo_mmap_obj(struct vm_area_struct *vma, struct ttm_buffer_object *bo)
+int ttm_bo_mmap_obj(struct mm_area *vma, struct ttm_buffer_object *bo)
 {
 	/* Enforce no COW since would have really strange behavior with it. */
 	if (is_cow_mapping(vma->vm_flags))
diff --git a/drivers/gpu/drm/vc4/vc4_bo.c b/drivers/gpu/drm/vc4/vc4_bo.c
index fb450b6a4d44..beedeaeecab4 100644
--- a/drivers/gpu/drm/vc4/vc4_bo.c
+++ b/drivers/gpu/drm/vc4/vc4_bo.c
@@ -715,7 +715,7 @@ static struct dma_buf *vc4_prime_export(struct drm_gem_object *obj, int flags)
 
 static vm_fault_t vc4_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct drm_gem_object *obj = vma->vm_private_data;
 	struct vc4_bo *bo = to_vc4_bo(obj);
 
@@ -729,7 +729,7 @@ static vm_fault_t vc4_fault(struct vm_fault *vmf)
 	return VM_FAULT_SIGBUS;
 }
 
-static int vc4_gem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int vc4_gem_object_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct vc4_bo *bo = to_vc4_bo(obj);
 
diff --git a/drivers/gpu/drm/virtio/virtgpu_vram.c b/drivers/gpu/drm/virtio/virtgpu_vram.c
index 5ad3b7c6f73c..02a03a237fb5 100644
--- a/drivers/gpu/drm/virtio/virtgpu_vram.c
+++ b/drivers/gpu/drm/virtio/virtgpu_vram.c
@@ -30,7 +30,7 @@ static const struct vm_operations_struct virtio_gpu_vram_vm_ops = {
 };
 
 static int virtio_gpu_vram_mmap(struct drm_gem_object *obj,
-				struct vm_area_struct *vma)
+				struct mm_area *vma)
 {
 	int ret;
 	struct virtio_gpu_device *vgdev = obj->dev->dev_private;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gem.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gem.c
index ed5015ced392..3d857670a3a1 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_gem.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gem.c
@@ -107,7 +107,7 @@ static void vmw_gem_vunmap(struct drm_gem_object *obj, struct iosys_map *map)
 		drm_gem_ttm_vunmap(obj, map);
 }
 
-static int vmw_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static int vmw_gem_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	int ret;
 
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c b/drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c
index 74ff2812d66a..38567fdf7163 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c
@@ -374,7 +374,7 @@ void vmw_bo_dirty_clear_res(struct vmw_resource *res)
 
 vm_fault_t vmw_bo_vm_mkwrite(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct ttm_buffer_object *bo = (struct ttm_buffer_object *)
 	    vma->vm_private_data;
 	vm_fault_t ret;
@@ -415,7 +415,7 @@ vm_fault_t vmw_bo_vm_mkwrite(struct vm_fault *vmf)
 
 vm_fault_t vmw_bo_vm_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct ttm_buffer_object *bo = (struct ttm_buffer_object *)
 	    vma->vm_private_data;
 	struct vmw_bo *vbo = to_vmw_bo(&bo->base);
diff --git a/drivers/gpu/drm/xe/display/intel_bo.c b/drivers/gpu/drm/xe/display/intel_bo.c
index 27437c22bd70..6e32ab48de68 100644
--- a/drivers/gpu/drm/xe/display/intel_bo.c
+++ b/drivers/gpu/drm/xe/display/intel_bo.c
@@ -32,7 +32,7 @@ void intel_bo_flush_if_display(struct drm_gem_object *obj)
 {
 }
 
-int intel_bo_fb_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+int intel_bo_fb_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	return drm_gem_prime_mmap(obj, vma);
 }
diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index 3c7c2353d3c8..20e08ee00eee 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -1579,7 +1579,7 @@ static vm_fault_t xe_gem_fault(struct vm_fault *vmf)
 	return ret;
 }
 
-static int xe_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,
+static int xe_bo_vm_access(struct mm_area *vma, unsigned long addr,
 			   void *buf, int len, int write)
 {
 	struct ttm_buffer_object *ttm_bo = vma->vm_private_data;
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index d8e227ddf255..30a5eb67d7a1 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -237,12 +237,12 @@ static long xe_drm_compat_ioctl(struct file *file, unsigned int cmd, unsigned lo
 #define xe_drm_compat_ioctl NULL
 #endif
 
-static void barrier_open(struct vm_area_struct *vma)
+static void barrier_open(struct mm_area *vma)
 {
 	drm_dev_get(vma->vm_private_data);
 }
 
-static void barrier_close(struct vm_area_struct *vma)
+static void barrier_close(struct mm_area *vma)
 {
 	drm_dev_put(vma->vm_private_data);
 }
@@ -257,7 +257,7 @@ static void barrier_release_dummy_page(struct drm_device *dev, void *res)
 static vm_fault_t barrier_fault(struct vm_fault *vmf)
 {
 	struct drm_device *dev = vmf->vma->vm_private_data;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	vm_fault_t ret = VM_FAULT_NOPAGE;
 	pgprot_t prot;
 	int idx;
@@ -299,7 +299,7 @@ static const struct vm_operations_struct vm_ops_barrier = {
 };
 
 static int xe_pci_barrier_mmap(struct file *filp,
-			       struct vm_area_struct *vma)
+			       struct mm_area *vma)
 {
 	struct drm_file *priv = filp->private_data;
 	struct drm_device *dev = priv->minor->dev;
@@ -326,7 +326,7 @@ static int xe_pci_barrier_mmap(struct file *filp,
 	return 0;
 }
 
-static int xe_mmap(struct file *filp, struct vm_area_struct *vma)
+static int xe_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct drm_file *priv = filp->private_data;
 	struct drm_device *dev = priv->minor->dev;
diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c
index 346f357b3d1f..d44ce76b3465 100644
--- a/drivers/gpu/drm/xe/xe_oa.c
+++ b/drivers/gpu/drm/xe/xe_oa.c
@@ -1623,7 +1623,7 @@ static int xe_oa_release(struct inode *inode, struct file *file)
 	return 0;
 }
 
-static int xe_oa_mmap(struct file *file, struct vm_area_struct *vma)
+static int xe_oa_mmap(struct file *file, struct mm_area *vma)
 {
 	struct xe_oa_stream *stream = file->private_data;
 	struct xe_bo *bo = stream->oa_buffer.bo;
diff --git a/drivers/gpu/drm/xen/xen_drm_front_gem.c b/drivers/gpu/drm/xen/xen_drm_front_gem.c
index 63112ed975c4..41449a270d89 100644
--- a/drivers/gpu/drm/xen/xen_drm_front_gem.c
+++ b/drivers/gpu/drm/xen/xen_drm_front_gem.c
@@ -58,7 +58,7 @@ static void gem_free_pages_array(struct xen_gem_object *xen_obj)
 }
 
 static int xen_drm_front_gem_object_mmap(struct drm_gem_object *gem_obj,
-					 struct vm_area_struct *vma)
+					 struct mm_area *vma)
 {
 	struct xen_gem_object *xen_obj = to_xen_gem_obj(gem_obj);
 	int ret;
diff --git a/drivers/hsi/clients/cmt_speech.c b/drivers/hsi/clients/cmt_speech.c
index daa8e1bff5d9..ca6debea1173 100644
--- a/drivers/hsi/clients/cmt_speech.c
+++ b/drivers/hsi/clients/cmt_speech.c
@@ -1256,7 +1256,7 @@ static long cs_char_ioctl(struct file *file, unsigned int cmd,
 	return r;
 }
 
-static int cs_char_mmap(struct file *file, struct vm_area_struct *vma)
+static int cs_char_mmap(struct file *file, struct mm_area *vma)
 {
 	if (vma->vm_end < vma->vm_start)
 		return -EINVAL;
diff --git a/drivers/hv/mshv_root_main.c b/drivers/hv/mshv_root_main.c
index 72df774e410a..ac1e44563cbf 100644
--- a/drivers/hv/mshv_root_main.c
+++ b/drivers/hv/mshv_root_main.c
@@ -75,7 +75,7 @@ static int mshv_vp_release(struct inode *inode, struct file *filp);
 static long mshv_vp_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg);
 static int mshv_partition_release(struct inode *inode, struct file *filp);
 static long mshv_partition_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg);
-static int mshv_vp_mmap(struct file *file, struct vm_area_struct *vma);
+static int mshv_vp_mmap(struct file *file, struct mm_area *vma);
 static vm_fault_t mshv_vp_fault(struct vm_fault *vmf);
 static int mshv_init_async_handler(struct mshv_partition *partition);
 static void mshv_async_hvcall_handler(void *data, u64 *status);
@@ -831,7 +831,7 @@ static vm_fault_t mshv_vp_fault(struct vm_fault *vmf)
 	return 0;
 }
 
-static int mshv_vp_mmap(struct file *file, struct vm_area_struct *vma)
+static int mshv_vp_mmap(struct file *file, struct mm_area *vma)
 {
 	struct mshv_vp *vp = file->private_data;
 
@@ -1332,7 +1332,7 @@ mshv_map_user_memory(struct mshv_partition *partition,
 		     struct mshv_user_mem_region mem)
 {
 	struct mshv_mem_region *region;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	bool is_mmio;
 	ulong mmio_pfn;
 	long ret;
diff --git a/drivers/hwtracing/intel_th/msu.c b/drivers/hwtracing/intel_th/msu.c
index bf99d79a4192..f51cbe4a8c55 100644
--- a/drivers/hwtracing/intel_th/msu.c
+++ b/drivers/hwtracing/intel_th/msu.c
@@ -1589,7 +1589,7 @@ static ssize_t intel_th_msc_read(struct file *file, char __user *buf,
  * vm operations callbacks (vm_ops)
  */
 
-static void msc_mmap_open(struct vm_area_struct *vma)
+static void msc_mmap_open(struct mm_area *vma)
 {
 	struct msc_iter *iter = vma->vm_file->private_data;
 	struct msc *msc = iter->msc;
@@ -1597,7 +1597,7 @@ static void msc_mmap_open(struct vm_area_struct *vma)
 	atomic_inc(&msc->mmap_count);
 }
 
-static void msc_mmap_close(struct vm_area_struct *vma)
+static void msc_mmap_close(struct mm_area *vma)
 {
 	struct msc_iter *iter = vma->vm_file->private_data;
 	struct msc *msc = iter->msc;
@@ -1644,7 +1644,7 @@ static const struct vm_operations_struct msc_mmap_ops = {
 	.fault	= msc_mmap_fault,
 };
 
-static int intel_th_msc_mmap(struct file *file, struct vm_area_struct *vma)
+static int intel_th_msc_mmap(struct file *file, struct mm_area *vma)
 {
 	unsigned long size = vma->vm_end - vma->vm_start;
 	struct msc_iter *iter = vma->vm_file->private_data;
diff --git a/drivers/hwtracing/stm/core.c b/drivers/hwtracing/stm/core.c
index cdba4e875b28..c27322d82289 100644
--- a/drivers/hwtracing/stm/core.c
+++ b/drivers/hwtracing/stm/core.c
@@ -666,7 +666,7 @@ static ssize_t stm_char_write(struct file *file, const char __user *buf,
 	return count;
 }
 
-static void stm_mmap_open(struct vm_area_struct *vma)
+static void stm_mmap_open(struct mm_area *vma)
 {
 	struct stm_file *stmf = vma->vm_file->private_data;
 	struct stm_device *stm = stmf->stm;
@@ -674,7 +674,7 @@ static void stm_mmap_open(struct vm_area_struct *vma)
 	pm_runtime_get(&stm->dev);
 }
 
-static void stm_mmap_close(struct vm_area_struct *vma)
+static void stm_mmap_close(struct mm_area *vma)
 {
 	struct stm_file *stmf = vma->vm_file->private_data;
 	struct stm_device *stm = stmf->stm;
@@ -688,7 +688,7 @@ static const struct vm_operations_struct stm_mmap_vmops = {
 	.close	= stm_mmap_close,
 };
 
-static int stm_char_mmap(struct file *file, struct vm_area_struct *vma)
+static int stm_char_mmap(struct file *file, struct mm_area *vma)
 {
 	struct stm_file *stmf = file->private_data;
 	struct stm_device *stm = stmf->stm;
diff --git a/drivers/infiniband/core/core_priv.h b/drivers/infiniband/core/core_priv.h
index 05102769a918..6662f745c123 100644
--- a/drivers/infiniband/core/core_priv.h
+++ b/drivers/infiniband/core/core_priv.h
@@ -359,13 +359,13 @@ int rdma_nl_net_init(struct rdma_dev_net *rnet);
 void rdma_nl_net_exit(struct rdma_dev_net *rnet);
 
 struct rdma_umap_priv {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct list_head list;
 	struct rdma_user_mmap_entry *entry;
 };
 
 void rdma_umap_priv_init(struct rdma_umap_priv *priv,
-			 struct vm_area_struct *vma,
+			 struct mm_area *vma,
 			 struct rdma_user_mmap_entry *entry);
 
 void ib_cq_pool_cleanup(struct ib_device *dev);
diff --git a/drivers/infiniband/core/ib_core_uverbs.c b/drivers/infiniband/core/ib_core_uverbs.c
index b51bd7087a88..949863e7c66f 100644
--- a/drivers/infiniband/core/ib_core_uverbs.c
+++ b/drivers/infiniband/core/ib_core_uverbs.c
@@ -28,7 +28,7 @@
  *
  */
 void rdma_umap_priv_init(struct rdma_umap_priv *priv,
-			 struct vm_area_struct *vma,
+			 struct mm_area *vma,
 			 struct rdma_user_mmap_entry *entry)
 {
 	struct ib_uverbs_file *ufile = vma->vm_file->private_data;
@@ -64,7 +64,7 @@ EXPORT_SYMBOL(rdma_umap_priv_init);
  * Return -EINVAL on wrong flags or size, -EAGAIN on failure to map. 0 on
  * success.
  */
-int rdma_user_mmap_io(struct ib_ucontext *ucontext, struct vm_area_struct *vma,
+int rdma_user_mmap_io(struct ib_ucontext *ucontext, struct mm_area *vma,
 		      unsigned long pfn, unsigned long size, pgprot_t prot,
 		      struct rdma_user_mmap_entry *entry)
 {
@@ -159,7 +159,7 @@ EXPORT_SYMBOL(rdma_user_mmap_entry_get_pgoff);
  */
 struct rdma_user_mmap_entry *
 rdma_user_mmap_entry_get(struct ib_ucontext *ucontext,
-			 struct vm_area_struct *vma)
+			 struct mm_area *vma)
 {
 	struct rdma_user_mmap_entry *entry;
 
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
index 973fe2c7ef53..565b497a4523 100644
--- a/drivers/infiniband/core/uverbs_main.c
+++ b/drivers/infiniband/core/uverbs_main.c
@@ -688,7 +688,7 @@ static ssize_t ib_uverbs_write(struct file *filp, const char __user *buf,
 
 static const struct vm_operations_struct rdma_umap_ops;
 
-static int ib_uverbs_mmap(struct file *filp, struct vm_area_struct *vma)
+static int ib_uverbs_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct ib_uverbs_file *file = filp->private_data;
 	struct ib_ucontext *ucontext;
@@ -717,7 +717,7 @@ static int ib_uverbs_mmap(struct file *filp, struct vm_area_struct *vma)
  * The VMA has been dup'd, initialize the vm_private_data with a new tracking
  * struct
  */
-static void rdma_umap_open(struct vm_area_struct *vma)
+static void rdma_umap_open(struct mm_area *vma)
 {
 	struct ib_uverbs_file *ufile = vma->vm_file->private_data;
 	struct rdma_umap_priv *opriv = vma->vm_private_data;
@@ -759,7 +759,7 @@ static void rdma_umap_open(struct vm_area_struct *vma)
 	zap_vma_ptes(vma, vma->vm_start, vma->vm_end - vma->vm_start);
 }
 
-static void rdma_umap_close(struct vm_area_struct *vma)
+static void rdma_umap_close(struct mm_area *vma)
 {
 	struct ib_uverbs_file *ufile = vma->vm_file->private_data;
 	struct rdma_umap_priv *priv = vma->vm_private_data;
@@ -872,7 +872,7 @@ void uverbs_user_mmap_disassociate(struct ib_uverbs_file *ufile)
 		mutex_lock(&ufile->umap_lock);
 		list_for_each_entry_safe (priv, next_priv, &ufile->umaps,
 					  list) {
-			struct vm_area_struct *vma = priv->vma;
+			struct mm_area *vma = priv->vma;
 
 			if (vma->vm_mm != mm)
 				continue;
diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
index 9082b3fd2b47..fd7b8fdc9bfb 100644
--- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c
+++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
@@ -4425,7 +4425,7 @@ static struct bnxt_re_srq *bnxt_re_search_for_srq(struct bnxt_re_dev *rdev, u32
 }
 
 /* Helper function to mmap the virtual memory from user app */
-int bnxt_re_mmap(struct ib_ucontext *ib_uctx, struct vm_area_struct *vma)
+int bnxt_re_mmap(struct ib_ucontext *ib_uctx, struct mm_area *vma)
 {
 	struct bnxt_re_ucontext *uctx = container_of(ib_uctx,
 						   struct bnxt_re_ucontext,
diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.h b/drivers/infiniband/hw/bnxt_re/ib_verbs.h
index 22c9eb8e9cfc..6f709d4bfc12 100644
--- a/drivers/infiniband/hw/bnxt_re/ib_verbs.h
+++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.h
@@ -265,7 +265,7 @@ struct ib_mr *bnxt_re_reg_user_mr_dmabuf(struct ib_pd *ib_pd, u64 start,
 					 struct uverbs_attr_bundle *attrs);
 int bnxt_re_alloc_ucontext(struct ib_ucontext *ctx, struct ib_udata *udata);
 void bnxt_re_dealloc_ucontext(struct ib_ucontext *context);
-int bnxt_re_mmap(struct ib_ucontext *context, struct vm_area_struct *vma);
+int bnxt_re_mmap(struct ib_ucontext *context, struct mm_area *vma);
 void bnxt_re_mmap_free(struct rdma_user_mmap_entry *rdma_entry);
 
 int bnxt_re_process_mad(struct ib_device *device, int process_mad_flags,
diff --git a/drivers/infiniband/hw/cxgb4/provider.c b/drivers/infiniband/hw/cxgb4/provider.c
index e059f92d90fd..c3b14c76e9fd 100644
--- a/drivers/infiniband/hw/cxgb4/provider.c
+++ b/drivers/infiniband/hw/cxgb4/provider.c
@@ -125,7 +125,7 @@ static int c4iw_alloc_ucontext(struct ib_ucontext *ucontext,
 	return ret;
 }
 
-static int c4iw_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
+static int c4iw_mmap(struct ib_ucontext *context, struct mm_area *vma)
 {
 	int len = vma->vm_end - vma->vm_start;
 	u32 key = vma->vm_pgoff << PAGE_SHIFT;
diff --git a/drivers/infiniband/hw/efa/efa.h b/drivers/infiniband/hw/efa/efa.h
index 838182d0409c..12502e6326bc 100644
--- a/drivers/infiniband/hw/efa/efa.h
+++ b/drivers/infiniband/hw/efa/efa.h
@@ -175,7 +175,7 @@ int efa_get_port_immutable(struct ib_device *ibdev, u32 port_num,
 int efa_alloc_ucontext(struct ib_ucontext *ibucontext, struct ib_udata *udata);
 void efa_dealloc_ucontext(struct ib_ucontext *ibucontext);
 int efa_mmap(struct ib_ucontext *ibucontext,
-	     struct vm_area_struct *vma);
+	     struct mm_area *vma);
 void efa_mmap_free(struct rdma_user_mmap_entry *rdma_entry);
 int efa_create_ah(struct ib_ah *ibah,
 		  struct rdma_ah_init_attr *init_attr,
diff --git a/drivers/infiniband/hw/efa/efa_verbs.c b/drivers/infiniband/hw/efa/efa_verbs.c
index a8645a40730f..3b9b6308bada 100644
--- a/drivers/infiniband/hw/efa/efa_verbs.c
+++ b/drivers/infiniband/hw/efa/efa_verbs.c
@@ -1978,7 +1978,7 @@ void efa_mmap_free(struct rdma_user_mmap_entry *rdma_entry)
 }
 
 static int __efa_mmap(struct efa_dev *dev, struct efa_ucontext *ucontext,
-		      struct vm_area_struct *vma)
+		      struct mm_area *vma)
 {
 	struct rdma_user_mmap_entry *rdma_entry;
 	struct efa_user_mmap_entry *entry;
@@ -2041,7 +2041,7 @@ static int __efa_mmap(struct efa_dev *dev, struct efa_ucontext *ucontext,
 }
 
 int efa_mmap(struct ib_ucontext *ibucontext,
-	     struct vm_area_struct *vma)
+	     struct mm_area *vma)
 {
 	struct efa_ucontext *ucontext = to_eucontext(ibucontext);
 	struct efa_dev *dev = to_edev(ibucontext->device);
diff --git a/drivers/infiniband/hw/erdma/erdma_verbs.c b/drivers/infiniband/hw/erdma/erdma_verbs.c
index af36a8d2df22..159f245e2e6b 100644
--- a/drivers/infiniband/hw/erdma/erdma_verbs.c
+++ b/drivers/infiniband/hw/erdma/erdma_verbs.c
@@ -1371,7 +1371,7 @@ void erdma_qp_put_ref(struct ib_qp *ibqp)
 	erdma_qp_put(to_eqp(ibqp));
 }
 
-int erdma_mmap(struct ib_ucontext *ctx, struct vm_area_struct *vma)
+int erdma_mmap(struct ib_ucontext *ctx, struct mm_area *vma)
 {
 	struct rdma_user_mmap_entry *rdma_entry;
 	struct erdma_user_mmap_entry *entry;
diff --git a/drivers/infiniband/hw/erdma/erdma_verbs.h b/drivers/infiniband/hw/erdma/erdma_verbs.h
index f9408ccc8bad..a4fd2061301c 100644
--- a/drivers/infiniband/hw/erdma/erdma_verbs.h
+++ b/drivers/infiniband/hw/erdma/erdma_verbs.h
@@ -455,7 +455,7 @@ struct ib_mr *erdma_reg_user_mr(struct ib_pd *ibpd, u64 start, u64 len,
 				u64 virt, int access, struct ib_udata *udata);
 struct ib_mr *erdma_get_dma_mr(struct ib_pd *ibpd, int rights);
 int erdma_dereg_mr(struct ib_mr *ibmr, struct ib_udata *data);
-int erdma_mmap(struct ib_ucontext *ctx, struct vm_area_struct *vma);
+int erdma_mmap(struct ib_ucontext *ctx, struct mm_area *vma);
 void erdma_mmap_free(struct rdma_user_mmap_entry *rdma_entry);
 void erdma_qp_get_ref(struct ib_qp *ibqp);
 void erdma_qp_put_ref(struct ib_qp *ibqp);
diff --git a/drivers/infiniband/hw/hfi1/file_ops.c b/drivers/infiniband/hw/hfi1/file_ops.c
index 503abec709c9..239416504cd9 100644
--- a/drivers/infiniband/hw/hfi1/file_ops.c
+++ b/drivers/infiniband/hw/hfi1/file_ops.c
@@ -35,7 +35,7 @@ static int hfi1_file_open(struct inode *inode, struct file *fp);
 static int hfi1_file_close(struct inode *inode, struct file *fp);
 static ssize_t hfi1_write_iter(struct kiocb *kiocb, struct iov_iter *from);
 static __poll_t hfi1_poll(struct file *fp, struct poll_table_struct *pt);
-static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma);
+static int hfi1_file_mmap(struct file *fp, struct mm_area *vma);
 
 static u64 kvirt_to_phys(void *addr);
 static int assign_ctxt(struct hfi1_filedata *fd, unsigned long arg, u32 len);
@@ -306,7 +306,7 @@ static ssize_t hfi1_write_iter(struct kiocb *kiocb, struct iov_iter *from)
 
 static inline void mmap_cdbg(u16 ctxt, u8 subctxt, u8 type, u8 mapio, u8 vmf,
 			     u64 memaddr, void *memvirt, dma_addr_t memdma,
-			     ssize_t memlen, struct vm_area_struct *vma)
+			     ssize_t memlen, struct mm_area *vma)
 {
 	hfi1_cdbg(PROC,
 		  "%u:%u type:%u io/vf/dma:%d/%d/%d, addr:0x%llx, len:%lu(%lu), flags:0x%lx",
@@ -315,7 +315,7 @@ static inline void mmap_cdbg(u16 ctxt, u8 subctxt, u8 type, u8 mapio, u8 vmf,
 		  vma->vm_end - vma->vm_start, vma->vm_flags);
 }
 
-static int hfi1_file_mmap(struct file *fp, struct vm_area_struct *vma)
+static int hfi1_file_mmap(struct file *fp, struct mm_area *vma)
 {
 	struct hfi1_filedata *fd = fp->private_data;
 	struct hfi1_ctxtdata *uctxt = fd->uctxt;
diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index cf89a8db4f64..098c1ec4de0a 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -457,7 +457,7 @@ static void hns_roce_dealloc_ucontext(struct ib_ucontext *ibcontext)
 	ida_free(&hr_dev->uar_ida.ida, (int)context->uar.logic_idx);
 }
 
-static int hns_roce_mmap(struct ib_ucontext *uctx, struct vm_area_struct *vma)
+static int hns_roce_mmap(struct ib_ucontext *uctx, struct mm_area *vma)
 {
 	struct hns_roce_dev *hr_dev = to_hr_dev(uctx->device);
 	struct rdma_user_mmap_entry *rdma_entry;
diff --git a/drivers/infiniband/hw/irdma/verbs.c b/drivers/infiniband/hw/irdma/verbs.c
index eeb932e58730..a361f423e140 100644
--- a/drivers/infiniband/hw/irdma/verbs.c
+++ b/drivers/infiniband/hw/irdma/verbs.c
@@ -117,7 +117,7 @@ static void irdma_disassociate_ucontext(struct ib_ucontext *context)
 }
 
 static int irdma_mmap_legacy(struct irdma_ucontext *ucontext,
-			     struct vm_area_struct *vma)
+			     struct mm_area *vma)
 {
 	u64 pfn;
 
@@ -168,7 +168,7 @@ irdma_user_mmap_entry_insert(struct irdma_ucontext *ucontext, u64 bar_offset,
  * @context: context created during alloc
  * @vma: kernel info for user memory map
  */
-static int irdma_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
+static int irdma_mmap(struct ib_ucontext *context, struct mm_area *vma)
 {
 	struct rdma_user_mmap_entry *rdma_entry;
 	struct irdma_user_mmap_entry *entry;
diff --git a/drivers/infiniband/hw/mana/main.c b/drivers/infiniband/hw/mana/main.c
index eda9c5b971de..a11368d8c979 100644
--- a/drivers/infiniband/hw/mana/main.c
+++ b/drivers/infiniband/hw/mana/main.c
@@ -512,7 +512,7 @@ int mana_ib_gd_destroy_dma_region(struct mana_ib_dev *dev, u64 gdma_region)
 	return mana_gd_destroy_dma_region(gc, gdma_region);
 }
 
-int mana_ib_mmap(struct ib_ucontext *ibcontext, struct vm_area_struct *vma)
+int mana_ib_mmap(struct ib_ucontext *ibcontext, struct mm_area *vma)
 {
 	struct mana_ib_ucontext *mana_ucontext =
 		container_of(ibcontext, struct mana_ib_ucontext, ibucontext);
diff --git a/drivers/infiniband/hw/mana/mana_ib.h b/drivers/infiniband/hw/mana/mana_ib.h
index 6903946677e5..f02d93ed4fec 100644
--- a/drivers/infiniband/hw/mana/mana_ib.h
+++ b/drivers/infiniband/hw/mana/mana_ib.h
@@ -628,7 +628,7 @@ int mana_ib_alloc_ucontext(struct ib_ucontext *ibcontext,
 			   struct ib_udata *udata);
 void mana_ib_dealloc_ucontext(struct ib_ucontext *ibcontext);
 
-int mana_ib_mmap(struct ib_ucontext *ibcontext, struct vm_area_struct *vma);
+int mana_ib_mmap(struct ib_ucontext *ibcontext, struct mm_area *vma);
 
 int mana_ib_get_port_immutable(struct ib_device *ibdev, u32 port_num,
 			       struct ib_port_immutable *immutable);
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index dd35e03402ab..26abc9faca3a 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -1150,7 +1150,7 @@ static void mlx4_ib_disassociate_ucontext(struct ib_ucontext *ibcontext)
 {
 }
 
-static int mlx4_ib_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
+static int mlx4_ib_mmap(struct ib_ucontext *context, struct mm_area *vma)
 {
 	struct mlx4_ib_dev *dev = to_mdev(context->device);
 
diff --git a/drivers/infiniband/hw/mlx4/mr.c b/drivers/infiniband/hw/mlx4/mr.c
index e77645a673fb..92821271c4a2 100644
--- a/drivers/infiniband/hw/mlx4/mr.c
+++ b/drivers/infiniband/hw/mlx4/mr.c
@@ -114,7 +114,7 @@ static struct ib_umem *mlx4_get_umem_mr(struct ib_device *device, u64 start,
 	 */
 	if (!ib_access_writable(access_flags)) {
 		unsigned long untagged_start = untagged_addr(start);
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 
 		mmap_read_lock(current->mm);
 		/*
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index d07cacaa0abd..9434b1c99b60 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -2201,7 +2201,7 @@ static inline char *mmap_cmd2str(enum mlx5_ib_mmap_cmd cmd)
 }
 
 static int mlx5_ib_mmap_clock_info_page(struct mlx5_ib_dev *dev,
-					struct vm_area_struct *vma,
+					struct mm_area *vma,
 					struct mlx5_ib_ucontext *context)
 {
 	if ((vma->vm_end - vma->vm_start != PAGE_SIZE) ||
@@ -2252,7 +2252,7 @@ static void mlx5_ib_mmap_free(struct rdma_user_mmap_entry *entry)
 }
 
 static int uar_mmap(struct mlx5_ib_dev *dev, enum mlx5_ib_mmap_cmd cmd,
-		    struct vm_area_struct *vma,
+		    struct mm_area *vma,
 		    struct mlx5_ib_ucontext *context)
 {
 	struct mlx5_bfreg_info *bfregi = &context->bfregi;
@@ -2359,7 +2359,7 @@ static int uar_mmap(struct mlx5_ib_dev *dev, enum mlx5_ib_mmap_cmd cmd,
 	return err;
 }
 
-static unsigned long mlx5_vma_to_pgoff(struct vm_area_struct *vma)
+static unsigned long mlx5_vma_to_pgoff(struct mm_area *vma)
 {
 	unsigned long idx;
 	u8 command;
@@ -2371,7 +2371,7 @@ static unsigned long mlx5_vma_to_pgoff(struct vm_area_struct *vma)
 }
 
 static int mlx5_ib_mmap_offset(struct mlx5_ib_dev *dev,
-			       struct vm_area_struct *vma,
+			       struct mm_area *vma,
 			       struct ib_ucontext *ucontext)
 {
 	struct mlx5_user_mmap_entry *mentry;
@@ -2410,7 +2410,7 @@ static u64 mlx5_entry_to_mmap_offset(struct mlx5_user_mmap_entry *entry)
 		(index & 0xFF)) << PAGE_SHIFT;
 }
 
-static int mlx5_ib_mmap(struct ib_ucontext *ibcontext, struct vm_area_struct *vma)
+static int mlx5_ib_mmap(struct ib_ucontext *ibcontext, struct mm_area *vma)
 {
 	struct mlx5_ib_ucontext *context = to_mucontext(ibcontext);
 	struct mlx5_ib_dev *dev = to_mdev(ibcontext->device);
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c
index 6a1e2e79ddc3..5934a0cc68a0 100644
--- a/drivers/infiniband/hw/mthca/mthca_provider.c
+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
@@ -330,7 +330,7 @@ static void mthca_dealloc_ucontext(struct ib_ucontext *context)
 }
 
 static int mthca_mmap_uar(struct ib_ucontext *context,
-			  struct vm_area_struct *vma)
+			  struct mm_area *vma)
 {
 	if (vma->vm_end - vma->vm_start != PAGE_SIZE)
 		return -EINVAL;
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
index 979de8f8df14..a4940538d888 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
@@ -536,7 +536,7 @@ void ocrdma_dealloc_ucontext(struct ib_ucontext *ibctx)
 	}
 }
 
-int ocrdma_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
+int ocrdma_mmap(struct ib_ucontext *context, struct mm_area *vma)
 {
 	struct ocrdma_ucontext *ucontext = get_ocrdma_ucontext(context);
 	struct ocrdma_dev *dev = get_ocrdma_dev(context->device);
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.h b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.h
index 0644346d8d98..7e9ff740faad 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.h
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.h
@@ -64,7 +64,7 @@ int ocrdma_query_pkey(struct ib_device *ibdev, u32 port, u16 index, u16 *pkey);
 int ocrdma_alloc_ucontext(struct ib_ucontext *uctx, struct ib_udata *udata);
 void ocrdma_dealloc_ucontext(struct ib_ucontext *uctx);
 
-int ocrdma_mmap(struct ib_ucontext *, struct vm_area_struct *vma);
+int ocrdma_mmap(struct ib_ucontext *, struct mm_area *vma);
 
 int ocrdma_alloc_pd(struct ib_pd *pd, struct ib_udata *udata);
 int ocrdma_dealloc_pd(struct ib_pd *pd, struct ib_udata *udata);
diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c
index 568a5b18803f..779bcac34ca1 100644
--- a/drivers/infiniband/hw/qedr/verbs.c
+++ b/drivers/infiniband/hw/qedr/verbs.c
@@ -385,7 +385,7 @@ void qedr_mmap_free(struct rdma_user_mmap_entry *rdma_entry)
 	kfree(entry);
 }
 
-int qedr_mmap(struct ib_ucontext *ucontext, struct vm_area_struct *vma)
+int qedr_mmap(struct ib_ucontext *ucontext, struct mm_area *vma)
 {
 	struct ib_device *dev = ucontext->device;
 	size_t length = vma->vm_end - vma->vm_start;
diff --git a/drivers/infiniband/hw/qedr/verbs.h b/drivers/infiniband/hw/qedr/verbs.h
index 5731458abb06..50654f10a4ea 100644
--- a/drivers/infiniband/hw/qedr/verbs.h
+++ b/drivers/infiniband/hw/qedr/verbs.h
@@ -45,7 +45,7 @@ int qedr_query_pkey(struct ib_device *ibdev, u32 port, u16 index, u16 *pkey);
 int qedr_alloc_ucontext(struct ib_ucontext *uctx, struct ib_udata *udata);
 void qedr_dealloc_ucontext(struct ib_ucontext *uctx);
 
-int qedr_mmap(struct ib_ucontext *ucontext, struct vm_area_struct *vma);
+int qedr_mmap(struct ib_ucontext *ucontext, struct mm_area *vma);
 void qedr_mmap_free(struct rdma_user_mmap_entry *rdma_entry);
 int qedr_alloc_pd(struct ib_pd *pd, struct ib_udata *udata);
 int qedr_dealloc_pd(struct ib_pd *pd, struct ib_udata *udata);
diff --git a/drivers/infiniband/hw/qib/qib_file_ops.c b/drivers/infiniband/hw/qib/qib_file_ops.c
index 29e4c59aa23b..b7ff897e3729 100644
--- a/drivers/infiniband/hw/qib/qib_file_ops.c
+++ b/drivers/infiniband/hw/qib/qib_file_ops.c
@@ -59,7 +59,7 @@ static int qib_close(struct inode *, struct file *);
 static ssize_t qib_write(struct file *, const char __user *, size_t, loff_t *);
 static ssize_t qib_write_iter(struct kiocb *, struct iov_iter *);
 static __poll_t qib_poll(struct file *, struct poll_table_struct *);
-static int qib_mmapf(struct file *, struct vm_area_struct *);
+static int qib_mmapf(struct file *, struct mm_area *);
 
 /*
  * This is really, really weird shit - write() and writev() here
@@ -705,7 +705,7 @@ static void qib_clean_part_key(struct qib_ctxtdata *rcd,
 }
 
 /* common code for the mappings on dma_alloc_coherent mem */
-static int qib_mmap_mem(struct vm_area_struct *vma, struct qib_ctxtdata *rcd,
+static int qib_mmap_mem(struct mm_area *vma, struct qib_ctxtdata *rcd,
 			unsigned len, void *kvaddr, u32 write_ok, char *what)
 {
 	struct qib_devdata *dd = rcd->dd;
@@ -747,7 +747,7 @@ static int qib_mmap_mem(struct vm_area_struct *vma, struct qib_ctxtdata *rcd,
 	return ret;
 }
 
-static int mmap_ureg(struct vm_area_struct *vma, struct qib_devdata *dd,
+static int mmap_ureg(struct mm_area *vma, struct qib_devdata *dd,
 		     u64 ureg)
 {
 	unsigned long phys;
@@ -778,7 +778,7 @@ static int mmap_ureg(struct vm_area_struct *vma, struct qib_devdata *dd,
 	return ret;
 }
 
-static int mmap_piobufs(struct vm_area_struct *vma,
+static int mmap_piobufs(struct mm_area *vma,
 			struct qib_devdata *dd,
 			struct qib_ctxtdata *rcd,
 			unsigned piobufs, unsigned piocnt)
@@ -823,7 +823,7 @@ static int mmap_piobufs(struct vm_area_struct *vma,
 	return ret;
 }
 
-static int mmap_rcvegrbufs(struct vm_area_struct *vma,
+static int mmap_rcvegrbufs(struct mm_area *vma,
 			   struct qib_ctxtdata *rcd)
 {
 	struct qib_devdata *dd = rcd->dd;
@@ -889,7 +889,7 @@ static const struct vm_operations_struct qib_file_vm_ops = {
 	.fault = qib_file_vma_fault,
 };
 
-static int mmap_kvaddr(struct vm_area_struct *vma, u64 pgaddr,
+static int mmap_kvaddr(struct mm_area *vma, u64 pgaddr,
 		       struct qib_ctxtdata *rcd, unsigned subctxt)
 {
 	struct qib_devdata *dd = rcd->dd;
@@ -971,7 +971,7 @@ static int mmap_kvaddr(struct vm_area_struct *vma, u64 pgaddr,
  * buffers in the chip.  We have the open and close entries so we can bump
  * the ref count and keep the driver from being unloaded while still mapped.
  */
-static int qib_mmapf(struct file *fp, struct vm_area_struct *vma)
+static int qib_mmapf(struct file *fp, struct mm_area *vma)
 {
 	struct qib_ctxtdata *rcd;
 	struct qib_devdata *dd;
diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
index 217af34e82b3..9ed349e5fcc3 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
+++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
@@ -658,7 +658,7 @@ void usnic_ib_dealloc_ucontext(struct ib_ucontext *ibcontext)
 }
 
 int usnic_ib_mmap(struct ib_ucontext *context,
-				struct vm_area_struct *vma)
+				struct mm_area *vma)
 {
 	struct usnic_ib_ucontext *uctx = to_ucontext(context);
 	struct usnic_ib_dev *us_ibdev;
diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.h b/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
index 53f53f2d53be..e445f74b027f 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
+++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.h
@@ -65,5 +65,5 @@ int usnic_ib_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata);
 int usnic_ib_alloc_ucontext(struct ib_ucontext *uctx, struct ib_udata *udata);
 void usnic_ib_dealloc_ucontext(struct ib_ucontext *ibcontext);
 int usnic_ib_mmap(struct ib_ucontext *context,
-			struct vm_area_struct *vma);
+			struct mm_area *vma);
 #endif /* !USNIC_IB_VERBS_H */
diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c
index bcd43dc30e21..e536181063cf 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.c
@@ -364,7 +364,7 @@ void pvrdma_dealloc_ucontext(struct ib_ucontext *ibcontext)
  *
  * @return: 0 on success, otherwise errno.
  */
-int pvrdma_mmap(struct ib_ucontext *ibcontext, struct vm_area_struct *vma)
+int pvrdma_mmap(struct ib_ucontext *ibcontext, struct mm_area *vma)
 {
 	struct pvrdma_ucontext *context = to_vucontext(ibcontext);
 	unsigned long start = vma->vm_start;
diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h
index fd47b0b1df5c..a3720f30cb8d 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h
@@ -358,7 +358,7 @@ enum rdma_link_layer pvrdma_port_link_layer(struct ib_device *ibdev,
 					    u32 port);
 int pvrdma_modify_port(struct ib_device *ibdev, u32 port,
 		       int mask, struct ib_port_modify *props);
-int pvrdma_mmap(struct ib_ucontext *context, struct vm_area_struct *vma);
+int pvrdma_mmap(struct ib_ucontext *context, struct mm_area *vma);
 int pvrdma_alloc_ucontext(struct ib_ucontext *uctx, struct ib_udata *udata);
 void pvrdma_dealloc_ucontext(struct ib_ucontext *context);
 int pvrdma_alloc_pd(struct ib_pd *pd, struct ib_udata *udata);
diff --git a/drivers/infiniband/sw/rdmavt/mmap.c b/drivers/infiniband/sw/rdmavt/mmap.c
index 46e3b3e0643a..45d7caafa4d0 100644
--- a/drivers/infiniband/sw/rdmavt/mmap.c
+++ b/drivers/infiniband/sw/rdmavt/mmap.c
@@ -39,14 +39,14 @@ void rvt_release_mmap_info(struct kref *ref)
 	kfree(ip);
 }
 
-static void rvt_vma_open(struct vm_area_struct *vma)
+static void rvt_vma_open(struct mm_area *vma)
 {
 	struct rvt_mmap_info *ip = vma->vm_private_data;
 
 	kref_get(&ip->ref);
 }
 
-static void rvt_vma_close(struct vm_area_struct *vma)
+static void rvt_vma_close(struct mm_area *vma)
 {
 	struct rvt_mmap_info *ip = vma->vm_private_data;
 
@@ -65,7 +65,7 @@ static const struct vm_operations_struct rvt_vm_ops = {
  *
  * Return: zero if the mmap is OK. Otherwise, return an errno.
  */
-int rvt_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
+int rvt_mmap(struct ib_ucontext *context, struct mm_area *vma)
 {
 	struct rvt_dev_info *rdi = ib_to_rvt(context->device);
 	unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
diff --git a/drivers/infiniband/sw/rdmavt/mmap.h b/drivers/infiniband/sw/rdmavt/mmap.h
index 29aaca3e8b83..7075597849cd 100644
--- a/drivers/infiniband/sw/rdmavt/mmap.h
+++ b/drivers/infiniband/sw/rdmavt/mmap.h
@@ -10,7 +10,7 @@
 
 void rvt_mmap_init(struct rvt_dev_info *rdi);
 void rvt_release_mmap_info(struct kref *ref);
-int rvt_mmap(struct ib_ucontext *context, struct vm_area_struct *vma);
+int rvt_mmap(struct ib_ucontext *context, struct mm_area *vma);
 struct rvt_mmap_info *rvt_create_mmap_info(struct rvt_dev_info *rdi, u32 size,
 					   struct ib_udata *udata, void *obj);
 void rvt_update_mmap_info(struct rvt_dev_info *rdi, struct rvt_mmap_info *ip,
diff --git a/drivers/infiniband/sw/rxe/rxe_loc.h b/drivers/infiniband/sw/rxe/rxe_loc.h
index feb386d98d1d..3f40a7a141af 100644
--- a/drivers/infiniband/sw/rxe/rxe_loc.h
+++ b/drivers/infiniband/sw/rxe/rxe_loc.h
@@ -54,7 +54,7 @@ void rxe_mmap_release(struct kref *ref);
 struct rxe_mmap_info *rxe_create_mmap_info(struct rxe_dev *dev, u32 size,
 					   struct ib_udata *udata, void *obj);
 
-int rxe_mmap(struct ib_ucontext *context, struct vm_area_struct *vma);
+int rxe_mmap(struct ib_ucontext *context, struct mm_area *vma);
 
 /* rxe_mr.c */
 u8 rxe_get_next_key(u32 last_key);
diff --git a/drivers/infiniband/sw/rxe/rxe_mmap.c b/drivers/infiniband/sw/rxe/rxe_mmap.c
index 6b7f2bd69879..2b478c3138b9 100644
--- a/drivers/infiniband/sw/rxe/rxe_mmap.c
+++ b/drivers/infiniband/sw/rxe/rxe_mmap.c
@@ -34,14 +34,14 @@ void rxe_mmap_release(struct kref *ref)
  * open and close keep track of how many times the memory region is mapped,
  * to avoid releasing it.
  */
-static void rxe_vma_open(struct vm_area_struct *vma)
+static void rxe_vma_open(struct mm_area *vma)
 {
 	struct rxe_mmap_info *ip = vma->vm_private_data;
 
 	kref_get(&ip->ref);
 }
 
-static void rxe_vma_close(struct vm_area_struct *vma)
+static void rxe_vma_close(struct mm_area *vma)
 {
 	struct rxe_mmap_info *ip = vma->vm_private_data;
 
@@ -59,7 +59,7 @@ static const struct vm_operations_struct rxe_vm_ops = {
  * @vma: the VMA to be initialized
  * Return zero if the mmap is OK. Otherwise, return an errno.
  */
-int rxe_mmap(struct ib_ucontext *context, struct vm_area_struct *vma)
+int rxe_mmap(struct ib_ucontext *context, struct mm_area *vma)
 {
 	struct rxe_dev *rxe = to_rdev(context->device);
 	unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
diff --git a/drivers/infiniband/sw/siw/siw_verbs.c b/drivers/infiniband/sw/siw/siw_verbs.c
index fd7b266a221b..e04bb047470d 100644
--- a/drivers/infiniband/sw/siw/siw_verbs.c
+++ b/drivers/infiniband/sw/siw/siw_verbs.c
@@ -51,7 +51,7 @@ void siw_mmap_free(struct rdma_user_mmap_entry *rdma_entry)
 	kfree(entry);
 }
 
-int siw_mmap(struct ib_ucontext *ctx, struct vm_area_struct *vma)
+int siw_mmap(struct ib_ucontext *ctx, struct mm_area *vma)
 {
 	struct siw_ucontext *uctx = to_siw_ctx(ctx);
 	size_t size = vma->vm_end - vma->vm_start;
diff --git a/drivers/infiniband/sw/siw/siw_verbs.h b/drivers/infiniband/sw/siw/siw_verbs.h
index 1f1a305540af..0df2ef43317c 100644
--- a/drivers/infiniband/sw/siw/siw_verbs.h
+++ b/drivers/infiniband/sw/siw/siw_verbs.h
@@ -80,7 +80,7 @@ int siw_query_srq(struct ib_srq *base_srq, struct ib_srq_attr *attr);
 int siw_destroy_srq(struct ib_srq *base_srq, struct ib_udata *udata);
 int siw_post_srq_recv(struct ib_srq *base_srq, const struct ib_recv_wr *wr,
 		      const struct ib_recv_wr **bad_wr);
-int siw_mmap(struct ib_ucontext *ctx, struct vm_area_struct *vma);
+int siw_mmap(struct ib_ucontext *ctx, struct mm_area *vma);
 void siw_mmap_free(struct rdma_user_mmap_entry *rdma_entry);
 void siw_qp_event(struct siw_qp *qp, enum ib_event_type type);
 void siw_cq_event(struct siw_cq *cq, enum ib_event_type type);
diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
index 6054d0ab8023..44e86a5bf175 100644
--- a/drivers/iommu/dma-iommu.c
+++ b/drivers/iommu/dma-iommu.c
@@ -1066,7 +1066,7 @@ void *iommu_dma_vmap_noncontiguous(struct device *dev, size_t size,
 	return vmap(sgt_handle(sgt)->pages, count, VM_MAP, PAGE_KERNEL);
 }
 
-int iommu_dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
+int iommu_dma_mmap_noncontiguous(struct device *dev, struct mm_area *vma,
 		size_t size, struct sg_table *sgt)
 {
 	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
@@ -1643,7 +1643,7 @@ void *iommu_dma_alloc(struct device *dev, size_t size, dma_addr_t *handle,
 	return cpu_addr;
 }
 
-int iommu_dma_mmap(struct device *dev, struct vm_area_struct *vma,
+int iommu_dma_mmap(struct device *dev, struct mm_area *vma,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs)
 {
diff --git a/drivers/iommu/iommu-sva.c b/drivers/iommu/iommu-sva.c
index ab18bc494eef..9d70a137db53 100644
--- a/drivers/iommu/iommu-sva.c
+++ b/drivers/iommu/iommu-sva.c
@@ -209,7 +209,7 @@ static enum iommu_page_response_code
 iommu_sva_handle_mm(struct iommu_fault *fault, struct mm_struct *mm)
 {
 	vm_fault_t ret;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned int access_flags = 0;
 	unsigned int fault_flags = FAULT_FLAG_REMOTE;
 	struct iommu_fault_page_request *prm = &fault->prm;
diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c
index 2df566f409b6..77bafec1433d 100644
--- a/drivers/media/common/videobuf2/videobuf2-core.c
+++ b/drivers/media/common/videobuf2/videobuf2-core.c
@@ -2496,7 +2496,7 @@ int vb2_core_expbuf(struct vb2_queue *q, int *fd, unsigned int type,
 }
 EXPORT_SYMBOL_GPL(vb2_core_expbuf);
 
-int vb2_mmap(struct vb2_queue *q, struct vm_area_struct *vma)
+int vb2_mmap(struct vb2_queue *q, struct mm_area *vma)
 {
 	unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
 	struct vb2_buffer *vb;
diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
index a13ec569c82f..e038533f7541 100644
--- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c
+++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c
@@ -271,7 +271,7 @@ static void *vb2_dc_alloc(struct vb2_buffer *vb,
 	return buf;
 }
 
-static int vb2_dc_mmap(void *buf_priv, struct vm_area_struct *vma)
+static int vb2_dc_mmap(void *buf_priv, struct mm_area *vma)
 {
 	struct vb2_dc_buf *buf = buf_priv;
 	int ret;
@@ -453,7 +453,7 @@ static int vb2_dc_dmabuf_ops_vmap(struct dma_buf *dbuf, struct iosys_map *map)
 }
 
 static int vb2_dc_dmabuf_ops_mmap(struct dma_buf *dbuf,
-	struct vm_area_struct *vma)
+	struct mm_area *vma)
 {
 	return vb2_dc_mmap(dbuf->priv, vma);
 }
diff --git a/drivers/media/common/videobuf2/videobuf2-dma-sg.c b/drivers/media/common/videobuf2/videobuf2-dma-sg.c
index c6ddf2357c58..78bc6dd98236 100644
--- a/drivers/media/common/videobuf2/videobuf2-dma-sg.c
+++ b/drivers/media/common/videobuf2/videobuf2-dma-sg.c
@@ -329,7 +329,7 @@ static unsigned int vb2_dma_sg_num_users(void *buf_priv)
 	return refcount_read(&buf->refcount);
 }
 
-static int vb2_dma_sg_mmap(void *buf_priv, struct vm_area_struct *vma)
+static int vb2_dma_sg_mmap(void *buf_priv, struct mm_area *vma)
 {
 	struct vb2_dma_sg_buf *buf = buf_priv;
 	int err;
@@ -501,7 +501,7 @@ static int vb2_dma_sg_dmabuf_ops_vmap(struct dma_buf *dbuf,
 }
 
 static int vb2_dma_sg_dmabuf_ops_mmap(struct dma_buf *dbuf,
-	struct vm_area_struct *vma)
+	struct mm_area *vma)
 {
 	return vb2_dma_sg_mmap(dbuf->priv, vma);
 }
diff --git a/drivers/media/common/videobuf2/videobuf2-memops.c b/drivers/media/common/videobuf2/videobuf2-memops.c
index f9a4ec44422e..3012d5b5c2d9 100644
--- a/drivers/media/common/videobuf2/videobuf2-memops.c
+++ b/drivers/media/common/videobuf2/videobuf2-memops.c
@@ -87,7 +87,7 @@ EXPORT_SYMBOL(vb2_destroy_framevec);
  * This function adds another user to the provided vma. It expects
  * struct vb2_vmarea_handler pointer in vma->vm_private_data.
  */
-static void vb2_common_vm_open(struct vm_area_struct *vma)
+static void vb2_common_vm_open(struct mm_area *vma)
 {
 	struct vb2_vmarea_handler *h = vma->vm_private_data;
 
@@ -105,7 +105,7 @@ static void vb2_common_vm_open(struct vm_area_struct *vma)
  * This function releases the user from the provided vma. It expects
  * struct vb2_vmarea_handler pointer in vma->vm_private_data.
  */
-static void vb2_common_vm_close(struct vm_area_struct *vma)
+static void vb2_common_vm_close(struct mm_area *vma)
 {
 	struct vb2_vmarea_handler *h = vma->vm_private_data;
 
diff --git a/drivers/media/common/videobuf2/videobuf2-v4l2.c b/drivers/media/common/videobuf2/videobuf2-v4l2.c
index 9201d854dbcc..73aa54baf3a0 100644
--- a/drivers/media/common/videobuf2/videobuf2-v4l2.c
+++ b/drivers/media/common/videobuf2/videobuf2-v4l2.c
@@ -1141,7 +1141,7 @@ EXPORT_SYMBOL_GPL(vb2_ioctl_expbuf);
 
 /* v4l2_file_operations helpers */
 
-int vb2_fop_mmap(struct file *file, struct vm_area_struct *vma)
+int vb2_fop_mmap(struct file *file, struct mm_area *vma)
 {
 	struct video_device *vdev = video_devdata(file);
 
diff --git a/drivers/media/common/videobuf2/videobuf2-vmalloc.c b/drivers/media/common/videobuf2/videobuf2-vmalloc.c
index 3f777068cd34..7f9526ab3e5a 100644
--- a/drivers/media/common/videobuf2/videobuf2-vmalloc.c
+++ b/drivers/media/common/videobuf2/videobuf2-vmalloc.c
@@ -167,7 +167,7 @@ static unsigned int vb2_vmalloc_num_users(void *buf_priv)
 	return refcount_read(&buf->refcount);
 }
 
-static int vb2_vmalloc_mmap(void *buf_priv, struct vm_area_struct *vma)
+static int vb2_vmalloc_mmap(void *buf_priv, struct mm_area *vma)
 {
 	struct vb2_vmalloc_buf *buf = buf_priv;
 	int ret;
@@ -318,7 +318,7 @@ static int vb2_vmalloc_dmabuf_ops_vmap(struct dma_buf *dbuf,
 }
 
 static int vb2_vmalloc_dmabuf_ops_mmap(struct dma_buf *dbuf,
-	struct vm_area_struct *vma)
+	struct mm_area *vma)
 {
 	return vb2_vmalloc_mmap(dbuf->priv, vma);
 }
diff --git a/drivers/media/dvb-core/dmxdev.c b/drivers/media/dvb-core/dmxdev.c
index 6063782e937a..72eae59b0646 100644
--- a/drivers/media/dvb-core/dmxdev.c
+++ b/drivers/media/dvb-core/dmxdev.c
@@ -1212,7 +1212,7 @@ static __poll_t dvb_demux_poll(struct file *file, poll_table *wait)
 }
 
 #ifdef CONFIG_DVB_MMAP
-static int dvb_demux_mmap(struct file *file, struct vm_area_struct *vma)
+static int dvb_demux_mmap(struct file *file, struct mm_area *vma)
 {
 	struct dmxdev_filter *dmxdevfilter = file->private_data;
 	struct dmxdev *dmxdev = dmxdevfilter->dev;
@@ -1362,7 +1362,7 @@ static __poll_t dvb_dvr_poll(struct file *file, poll_table *wait)
 }
 
 #ifdef CONFIG_DVB_MMAP
-static int dvb_dvr_mmap(struct file *file, struct vm_area_struct *vma)
+static int dvb_dvr_mmap(struct file *file, struct mm_area *vma)
 {
 	struct dvb_device *dvbdev = file->private_data;
 	struct dmxdev *dmxdev = dvbdev->priv;
diff --git a/drivers/media/dvb-core/dvb_vb2.c b/drivers/media/dvb-core/dvb_vb2.c
index 29edaaff7a5c..8e6b7b0463e9 100644
--- a/drivers/media/dvb-core/dvb_vb2.c
+++ b/drivers/media/dvb-core/dvb_vb2.c
@@ -431,7 +431,7 @@ int dvb_vb2_dqbuf(struct dvb_vb2_ctx *ctx, struct dmx_buffer *b)
 	return 0;
 }
 
-int dvb_vb2_mmap(struct dvb_vb2_ctx *ctx, struct vm_area_struct *vma)
+int dvb_vb2_mmap(struct dvb_vb2_ctx *ctx, struct mm_area *vma)
 {
 	int ret;
 
diff --git a/drivers/media/pci/cx18/cx18-fileops.h b/drivers/media/pci/cx18/cx18-fileops.h
index 943057b83d94..be284bd28c53 100644
--- a/drivers/media/pci/cx18/cx18-fileops.h
+++ b/drivers/media/pci/cx18/cx18-fileops.h
@@ -19,7 +19,7 @@ int cx18_start_capture(struct cx18_open_id *id);
 void cx18_stop_capture(struct cx18_stream *s, int gop_end);
 void cx18_mute(struct cx18 *cx);
 void cx18_unmute(struct cx18 *cx);
-int cx18_v4l2_mmap(struct file *file, struct vm_area_struct *vma);
+int cx18_v4l2_mmap(struct file *file, struct mm_area *vma);
 void cx18_clear_queue(struct cx18_stream *s, enum vb2_buffer_state state);
 void cx18_vb_timeout(struct timer_list *t);
 
diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.c b/drivers/media/pci/intel/ipu6/ipu6-dma.c
index 1ca60ca79dba..ffcd43703d6a 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-dma.c
+++ b/drivers/media/pci/intel/ipu6/ipu6-dma.c
@@ -294,7 +294,7 @@ void ipu6_dma_free(struct ipu6_bus_device *sys, size_t size, void *vaddr,
 }
 EXPORT_SYMBOL_NS_GPL(ipu6_dma_free, "INTEL_IPU6");
 
-int ipu6_dma_mmap(struct ipu6_bus_device *sys, struct vm_area_struct *vma,
+int ipu6_dma_mmap(struct ipu6_bus_device *sys, struct mm_area *vma,
 		  void *addr, dma_addr_t iova, size_t size,
 		  unsigned long attrs)
 {
diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.h b/drivers/media/pci/intel/ipu6/ipu6-dma.h
index 2882850d9366..8c63e2883ebb 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-dma.h
+++ b/drivers/media/pci/intel/ipu6/ipu6-dma.h
@@ -30,7 +30,7 @@ void *ipu6_dma_alloc(struct ipu6_bus_device *sys, size_t size,
 		     unsigned long attrs);
 void ipu6_dma_free(struct ipu6_bus_device *sys, size_t size, void *vaddr,
 		   dma_addr_t dma_handle, unsigned long attrs);
-int ipu6_dma_mmap(struct ipu6_bus_device *sys, struct vm_area_struct *vma,
+int ipu6_dma_mmap(struct ipu6_bus_device *sys, struct mm_area *vma,
 		  void *addr, dma_addr_t iova, size_t size,
 		  unsigned long attrs);
 int ipu6_dma_map_sg(struct ipu6_bus_device *sys, struct scatterlist *sglist,
diff --git a/drivers/media/platform/samsung/exynos-gsc/gsc-m2m.c b/drivers/media/platform/samsung/exynos-gsc/gsc-m2m.c
index 4bda1c369c44..8c35172b0e38 100644
--- a/drivers/media/platform/samsung/exynos-gsc/gsc-m2m.c
+++ b/drivers/media/platform/samsung/exynos-gsc/gsc-m2m.c
@@ -703,7 +703,7 @@ static __poll_t gsc_m2m_poll(struct file *file,
 	return ret;
 }
 
-static int gsc_m2m_mmap(struct file *file, struct vm_area_struct *vma)
+static int gsc_m2m_mmap(struct file *file, struct mm_area *vma)
 {
 	struct gsc_ctx *ctx = fh_to_ctx(file->private_data);
 	struct gsc_dev *gsc = ctx->gsc_dev;
diff --git a/drivers/media/platform/samsung/s3c-camif/camif-capture.c b/drivers/media/platform/samsung/s3c-camif/camif-capture.c
index bd1149e8abc2..5ee766d8c40e 100644
--- a/drivers/media/platform/samsung/s3c-camif/camif-capture.c
+++ b/drivers/media/platform/samsung/s3c-camif/camif-capture.c
@@ -604,7 +604,7 @@ static __poll_t s3c_camif_poll(struct file *file,
 	return ret;
 }
 
-static int s3c_camif_mmap(struct file *file, struct vm_area_struct *vma)
+static int s3c_camif_mmap(struct file *file, struct mm_area *vma)
 {
 	struct camif_vp *vp = video_drvdata(file);
 	int ret;
diff --git a/drivers/media/platform/samsung/s5p-mfc/s5p_mfc.c b/drivers/media/platform/samsung/s5p-mfc/s5p_mfc.c
index 5f80931f056d..81656e3f2c49 100644
--- a/drivers/media/platform/samsung/s5p-mfc/s5p_mfc.c
+++ b/drivers/media/platform/samsung/s5p-mfc/s5p_mfc.c
@@ -1062,7 +1062,7 @@ static __poll_t s5p_mfc_poll(struct file *file,
 }
 
 /* Mmap */
-static int s5p_mfc_mmap(struct file *file, struct vm_area_struct *vma)
+static int s5p_mfc_mmap(struct file *file, struct mm_area *vma)
 {
 	struct s5p_mfc_ctx *ctx = fh_to_ctx(file->private_data);
 	unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
diff --git a/drivers/media/platform/ti/omap3isp/ispvideo.c b/drivers/media/platform/ti/omap3isp/ispvideo.c
index 5c9aa80023fd..ddab948fa88f 100644
--- a/drivers/media/platform/ti/omap3isp/ispvideo.c
+++ b/drivers/media/platform/ti/omap3isp/ispvideo.c
@@ -1401,7 +1401,7 @@ static __poll_t isp_video_poll(struct file *file, poll_table *wait)
 	return ret;
 }
 
-static int isp_video_mmap(struct file *file, struct vm_area_struct *vma)
+static int isp_video_mmap(struct file *file, struct mm_area *vma)
 {
 	struct isp_video_fh *vfh = to_isp_video_fh(file->private_data);
 
diff --git a/drivers/media/usb/uvc/uvc_queue.c b/drivers/media/usb/uvc/uvc_queue.c
index 2ee142621042..25642a2e8eec 100644
--- a/drivers/media/usb/uvc/uvc_queue.c
+++ b/drivers/media/usb/uvc/uvc_queue.c
@@ -346,7 +346,7 @@ int uvc_queue_streamoff(struct uvc_video_queue *queue, enum v4l2_buf_type type)
 	return ret;
 }
 
-int uvc_queue_mmap(struct uvc_video_queue *queue, struct vm_area_struct *vma)
+int uvc_queue_mmap(struct uvc_video_queue *queue, struct mm_area *vma)
 {
 	return vb2_mmap(&queue->queue, vma);
 }
diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
index 39065db44e86..f73fd604a62d 100644
--- a/drivers/media/usb/uvc/uvc_v4l2.c
+++ b/drivers/media/usb/uvc/uvc_v4l2.c
@@ -1413,7 +1413,7 @@ static ssize_t uvc_v4l2_read(struct file *file, char __user *data,
 	return -EINVAL;
 }
 
-static int uvc_v4l2_mmap(struct file *file, struct vm_area_struct *vma)
+static int uvc_v4l2_mmap(struct file *file, struct mm_area *vma)
 {
 	struct uvc_fh *handle = file->private_data;
 	struct uvc_streaming *stream = handle->stream;
diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
index b4ee701835fc..a56e30f5a487 100644
--- a/drivers/media/usb/uvc/uvcvideo.h
+++ b/drivers/media/usb/uvc/uvcvideo.h
@@ -708,7 +708,7 @@ struct uvc_buffer *uvc_queue_next_buffer(struct uvc_video_queue *queue,
 struct uvc_buffer *uvc_queue_get_current_buffer(struct uvc_video_queue *queue);
 void uvc_queue_buffer_release(struct uvc_buffer *buf);
 int uvc_queue_mmap(struct uvc_video_queue *queue,
-		   struct vm_area_struct *vma);
+		   struct mm_area *vma);
 __poll_t uvc_queue_poll(struct uvc_video_queue *queue, struct file *file,
 			poll_table *wait);
 #ifndef CONFIG_MMU
diff --git a/drivers/media/v4l2-core/v4l2-dev.c b/drivers/media/v4l2-core/v4l2-dev.c
index b40c08ce909d..172f16bd0d79 100644
--- a/drivers/media/v4l2-core/v4l2-dev.c
+++ b/drivers/media/v4l2-core/v4l2-dev.c
@@ -392,7 +392,7 @@ static unsigned long v4l2_get_unmapped_area(struct file *filp,
 }
 #endif
 
-static int v4l2_mmap(struct file *filp, struct vm_area_struct *vm)
+static int v4l2_mmap(struct file *filp, struct mm_area *vm)
 {
 	struct video_device *vdev = video_devdata(filp);
 	int ret = -ENODEV;
diff --git a/drivers/media/v4l2-core/v4l2-mem2mem.c b/drivers/media/v4l2-core/v4l2-mem2mem.c
index eb22d6172462..219609e59ee1 100644
--- a/drivers/media/v4l2-core/v4l2-mem2mem.c
+++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
@@ -983,7 +983,7 @@ __poll_t v4l2_m2m_poll(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
 EXPORT_SYMBOL_GPL(v4l2_m2m_poll);
 
 int v4l2_m2m_mmap(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
-			 struct vm_area_struct *vma)
+			 struct mm_area *vma)
 {
 	unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
 	struct vb2_queue *vq;
@@ -1615,7 +1615,7 @@ EXPORT_SYMBOL_GPL(v4l2_m2m_ioctl_stateless_decoder_cmd);
  * for the output and the capture buffer queue.
  */
 
-int v4l2_m2m_fop_mmap(struct file *file, struct vm_area_struct *vma)
+int v4l2_m2m_fop_mmap(struct file *file, struct mm_area *vma)
 {
 	struct v4l2_fh *fh = file->private_data;
 
diff --git a/drivers/misc/bcm-vk/bcm_vk_dev.c b/drivers/misc/bcm-vk/bcm_vk_dev.c
index d4a96137728d..5742434e1178 100644
--- a/drivers/misc/bcm-vk/bcm_vk_dev.c
+++ b/drivers/misc/bcm-vk/bcm_vk_dev.c
@@ -1201,7 +1201,7 @@ static long bcm_vk_reset(struct bcm_vk *vk, struct vk_reset __user *arg)
 	return ret;
 }
 
-static int bcm_vk_mmap(struct file *file, struct vm_area_struct *vma)
+static int bcm_vk_mmap(struct file *file, struct mm_area *vma)
 {
 	struct bcm_vk_ctx *ctx = file->private_data;
 	struct bcm_vk *vk = container_of(ctx->miscdev, struct bcm_vk, miscdev);
diff --git a/drivers/misc/fastrpc.c b/drivers/misc/fastrpc.c
index 7b7a22c91fe4..e8c4ed8aea52 100644
--- a/drivers/misc/fastrpc.c
+++ b/drivers/misc/fastrpc.c
@@ -731,7 +731,7 @@ static int fastrpc_vmap(struct dma_buf *dmabuf, struct iosys_map *map)
 }
 
 static int fastrpc_mmap(struct dma_buf *dmabuf,
-			struct vm_area_struct *vma)
+			struct mm_area *vma)
 {
 	struct fastrpc_buf *buf = dmabuf->priv;
 	size_t size = vma->vm_end - vma->vm_start;
@@ -984,7 +984,7 @@ static int fastrpc_get_args(u32 kernel, struct fastrpc_invoke_ctx *ctx)
 			continue;
 
 		if (ctx->maps[i]) {
-			struct vm_area_struct *vma = NULL;
+			struct mm_area *vma = NULL;
 
 			rpra[i].buf.pv = (u64) ctx->args[i].ptr;
 			pages[i].addr = ctx->maps[i]->phys;
diff --git a/drivers/misc/genwqe/card_dev.c b/drivers/misc/genwqe/card_dev.c
index 4441aca2280a..acff9681d657 100644
--- a/drivers/misc/genwqe/card_dev.c
+++ b/drivers/misc/genwqe/card_dev.c
@@ -376,7 +376,7 @@ static int genwqe_release(struct inode *inode, struct file *filp)
 	return 0;
 }
 
-static void genwqe_vma_open(struct vm_area_struct *vma)
+static void genwqe_vma_open(struct mm_area *vma)
 {
 	/* nothing ... */
 }
@@ -387,7 +387,7 @@ static void genwqe_vma_open(struct vm_area_struct *vma)
  *
  * Free memory which got allocated by GenWQE mmap().
  */
-static void genwqe_vma_close(struct vm_area_struct *vma)
+static void genwqe_vma_close(struct mm_area *vma)
 {
 	unsigned long vsize = vma->vm_end - vma->vm_start;
 	struct inode *inode = file_inode(vma->vm_file);
@@ -432,7 +432,7 @@ static const struct vm_operations_struct genwqe_vma_ops = {
  * plain buffer, we lookup our dma_mapping list to find the
  * corresponding DMA address for the associated user-space address.
  */
-static int genwqe_mmap(struct file *filp, struct vm_area_struct *vma)
+static int genwqe_mmap(struct file *filp, struct mm_area *vma)
 {
 	int rc;
 	unsigned long pfn, vsize = vma->vm_end - vma->vm_start;
diff --git a/drivers/misc/ocxl/context.c b/drivers/misc/ocxl/context.c
index cded7d1caf32..da4b82b2c938 100644
--- a/drivers/misc/ocxl/context.c
+++ b/drivers/misc/ocxl/context.c
@@ -95,7 +95,7 @@ int ocxl_context_attach(struct ocxl_context *ctx, u64 amr, struct mm_struct *mm)
 }
 EXPORT_SYMBOL_GPL(ocxl_context_attach);
 
-static vm_fault_t map_afu_irq(struct vm_area_struct *vma, unsigned long address,
+static vm_fault_t map_afu_irq(struct mm_area *vma, unsigned long address,
 		u64 offset, struct ocxl_context *ctx)
 {
 	u64 trigger_addr;
@@ -108,7 +108,7 @@ static vm_fault_t map_afu_irq(struct vm_area_struct *vma, unsigned long address,
 	return vmf_insert_pfn(vma, address, trigger_addr >> PAGE_SHIFT);
 }
 
-static vm_fault_t map_pp_mmio(struct vm_area_struct *vma, unsigned long address,
+static vm_fault_t map_pp_mmio(struct mm_area *vma, unsigned long address,
 		u64 offset, struct ocxl_context *ctx)
 {
 	u64 pp_mmio_addr;
@@ -138,7 +138,7 @@ static vm_fault_t map_pp_mmio(struct vm_area_struct *vma, unsigned long address,
 
 static vm_fault_t ocxl_mmap_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct ocxl_context *ctx = vma->vm_file->private_data;
 	u64 offset;
 	vm_fault_t ret;
@@ -159,7 +159,7 @@ static const struct vm_operations_struct ocxl_vmops = {
 };
 
 static int check_mmap_afu_irq(struct ocxl_context *ctx,
-			struct vm_area_struct *vma)
+			struct mm_area *vma)
 {
 	int irq_id = ocxl_irq_offset_to_id(ctx, vma->vm_pgoff << PAGE_SHIFT);
 
@@ -185,7 +185,7 @@ static int check_mmap_afu_irq(struct ocxl_context *ctx,
 }
 
 static int check_mmap_mmio(struct ocxl_context *ctx,
-			struct vm_area_struct *vma)
+			struct mm_area *vma)
 {
 	if ((vma_pages(vma) + vma->vm_pgoff) >
 		(ctx->afu->config.pp_mmio_stride >> PAGE_SHIFT))
@@ -193,7 +193,7 @@ static int check_mmap_mmio(struct ocxl_context *ctx,
 	return 0;
 }
 
-int ocxl_context_mmap(struct ocxl_context *ctx, struct vm_area_struct *vma)
+int ocxl_context_mmap(struct ocxl_context *ctx, struct mm_area *vma)
 {
 	int rc;
 
diff --git a/drivers/misc/ocxl/file.c b/drivers/misc/ocxl/file.c
index 7eb74711ac96..68ce28450ac8 100644
--- a/drivers/misc/ocxl/file.c
+++ b/drivers/misc/ocxl/file.c
@@ -289,7 +289,7 @@ static long afu_compat_ioctl(struct file *file, unsigned int cmd,
 	return afu_ioctl(file, cmd, args);
 }
 
-static int afu_mmap(struct file *file, struct vm_area_struct *vma)
+static int afu_mmap(struct file *file, struct mm_area *vma)
 {
 	struct ocxl_context *ctx = file->private_data;
 
diff --git a/drivers/misc/ocxl/ocxl_internal.h b/drivers/misc/ocxl/ocxl_internal.h
index d2028d6c6f08..4008b894d983 100644
--- a/drivers/misc/ocxl/ocxl_internal.h
+++ b/drivers/misc/ocxl/ocxl_internal.h
@@ -139,7 +139,7 @@ int ocxl_config_check_afu_index(struct pci_dev *dev,
 int ocxl_link_update_pe(void *link_handle, int pasid, __u16 tid);
 
 int ocxl_context_mmap(struct ocxl_context *ctx,
-			struct vm_area_struct *vma);
+			struct mm_area *vma);
 void ocxl_context_detach_all(struct ocxl_afu *afu);
 
 int ocxl_sysfs_register_afu(struct ocxl_file_info *info);
diff --git a/drivers/misc/ocxl/sysfs.c b/drivers/misc/ocxl/sysfs.c
index e849641687a0..2ba0dc539358 100644
--- a/drivers/misc/ocxl/sysfs.c
+++ b/drivers/misc/ocxl/sysfs.c
@@ -108,7 +108,7 @@ static ssize_t global_mmio_read(struct file *filp, struct kobject *kobj,
 
 static vm_fault_t global_mmio_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct ocxl_afu *afu = vma->vm_private_data;
 	unsigned long offset;
 
@@ -126,7 +126,7 @@ static const struct vm_operations_struct global_mmio_vmops = {
 
 static int global_mmio_mmap(struct file *filp, struct kobject *kobj,
 			const struct bin_attribute *bin_attr,
-			struct vm_area_struct *vma)
+			struct mm_area *vma)
 {
 	struct ocxl_afu *afu = to_afu(kobj_to_dev(kobj));
 
diff --git a/drivers/misc/open-dice.c b/drivers/misc/open-dice.c
index 24c29e0f00ef..d763a0bd0c8a 100644
--- a/drivers/misc/open-dice.c
+++ b/drivers/misc/open-dice.c
@@ -86,7 +86,7 @@ static ssize_t open_dice_write(struct file *filp, const char __user *ptr,
 /*
  * Creates a mapping of the reserved memory region in user address space.
  */
-static int open_dice_mmap(struct file *filp, struct vm_area_struct *vma)
+static int open_dice_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct open_dice_drvdata *drvdata = to_open_dice_drvdata(filp);
 
diff --git a/drivers/misc/sgi-gru/grufault.c b/drivers/misc/sgi-gru/grufault.c
index 3557d78ee47a..a97dde2c3775 100644
--- a/drivers/misc/sgi-gru/grufault.c
+++ b/drivers/misc/sgi-gru/grufault.c
@@ -45,9 +45,9 @@ static inline int is_gru_paddr(unsigned long paddr)
 /*
  * Find the vma of a GRU segment. Caller must hold mmap_lock.
  */
-struct vm_area_struct *gru_find_vma(unsigned long vaddr)
+struct mm_area *gru_find_vma(unsigned long vaddr)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	vma = vma_lookup(current->mm, vaddr);
 	if (vma && vma->vm_ops == &gru_vm_ops)
@@ -66,7 +66,7 @@ struct vm_area_struct *gru_find_vma(unsigned long vaddr)
 static struct gru_thread_state *gru_find_lock_gts(unsigned long vaddr)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct gru_thread_state *gts = NULL;
 
 	mmap_read_lock(mm);
@@ -83,7 +83,7 @@ static struct gru_thread_state *gru_find_lock_gts(unsigned long vaddr)
 static struct gru_thread_state *gru_alloc_locked_gts(unsigned long vaddr)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct gru_thread_state *gts = ERR_PTR(-EINVAL);
 
 	mmap_write_lock(mm);
@@ -174,7 +174,7 @@ static void get_clear_fault_map(struct gru_state *gru,
  * 		< 0 - error code
  * 		  1 - (atomic only) try again in non-atomic context
  */
-static int non_atomic_pte_lookup(struct vm_area_struct *vma,
+static int non_atomic_pte_lookup(struct mm_area *vma,
 				 unsigned long vaddr, int write,
 				 unsigned long *paddr, int *pageshift)
 {
@@ -202,7 +202,7 @@ static int non_atomic_pte_lookup(struct vm_area_struct *vma,
  * NOTE: mmap_lock is already held on entry to this function. This
  * guarantees existence of the page tables.
  */
-static int atomic_pte_lookup(struct vm_area_struct *vma, unsigned long vaddr,
+static int atomic_pte_lookup(struct mm_area *vma, unsigned long vaddr,
 	int write, unsigned long *paddr, int *pageshift)
 {
 	pgd_t *pgdp;
@@ -253,7 +253,7 @@ static int gru_vtop(struct gru_thread_state *gts, unsigned long vaddr,
 		    int write, int atomic, unsigned long *gpa, int *pageshift)
 {
 	struct mm_struct *mm = gts->ts_mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long paddr;
 	int ret, ps;
 
diff --git a/drivers/misc/sgi-gru/grufile.c b/drivers/misc/sgi-gru/grufile.c
index e755690c9805..b831fdb27841 100644
--- a/drivers/misc/sgi-gru/grufile.c
+++ b/drivers/misc/sgi-gru/grufile.c
@@ -58,7 +58,7 @@ static int gru_supported(void)
  * Called when unmapping a device mapping. Frees all gru resources
  * and tables belonging to the vma.
  */
-static void gru_vma_close(struct vm_area_struct *vma)
+static void gru_vma_close(struct mm_area *vma)
 {
 	struct gru_vma_data *vdata;
 	struct gru_thread_state *gts;
@@ -92,7 +92,7 @@ static void gru_vma_close(struct vm_area_struct *vma)
  * and private data structure necessary to allocate, track, and free the
  * underlying pages.
  */
-static int gru_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int gru_file_mmap(struct file *file, struct mm_area *vma)
 {
 	if ((vma->vm_flags & (VM_SHARED | VM_WRITE)) != (VM_SHARED | VM_WRITE))
 		return -EPERM;
@@ -121,7 +121,7 @@ static int gru_file_mmap(struct file *file, struct vm_area_struct *vma)
 static int gru_create_new_context(unsigned long arg)
 {
 	struct gru_create_context_req req;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct gru_vma_data *vdata;
 	int ret = -EINVAL;
 
diff --git a/drivers/misc/sgi-gru/grumain.c b/drivers/misc/sgi-gru/grumain.c
index 3036c15f3689..96374726d7e6 100644
--- a/drivers/misc/sgi-gru/grumain.c
+++ b/drivers/misc/sgi-gru/grumain.c
@@ -303,7 +303,7 @@ static struct gru_thread_state *gru_find_current_gts_nolock(struct gru_vma_data
 /*
  * Allocate a thread state structure.
  */
-struct gru_thread_state *gru_alloc_gts(struct vm_area_struct *vma,
+struct gru_thread_state *gru_alloc_gts(struct mm_area *vma,
 		int cbr_au_count, int dsr_au_count,
 		unsigned char tlb_preload_count, int options, int tsid)
 {
@@ -352,7 +352,7 @@ struct gru_thread_state *gru_alloc_gts(struct vm_area_struct *vma,
 /*
  * Allocate a vma private data structure.
  */
-struct gru_vma_data *gru_alloc_vma_data(struct vm_area_struct *vma, int tsid)
+struct gru_vma_data *gru_alloc_vma_data(struct mm_area *vma, int tsid)
 {
 	struct gru_vma_data *vdata = NULL;
 
@@ -370,7 +370,7 @@ struct gru_vma_data *gru_alloc_vma_data(struct vm_area_struct *vma, int tsid)
 /*
  * Find the thread state structure for the current thread.
  */
-struct gru_thread_state *gru_find_thread_state(struct vm_area_struct *vma,
+struct gru_thread_state *gru_find_thread_state(struct mm_area *vma,
 					int tsid)
 {
 	struct gru_vma_data *vdata = vma->vm_private_data;
@@ -387,7 +387,7 @@ struct gru_thread_state *gru_find_thread_state(struct vm_area_struct *vma,
  * Allocate a new thread state for a GSEG. Note that races may allow
  * another thread to race to create a gts.
  */
-struct gru_thread_state *gru_alloc_thread_state(struct vm_area_struct *vma,
+struct gru_thread_state *gru_alloc_thread_state(struct mm_area *vma,
 					int tsid)
 {
 	struct gru_vma_data *vdata = vma->vm_private_data;
@@ -920,7 +920,7 @@ struct gru_state *gru_assign_gru_context(struct gru_thread_state *gts)
  */
 vm_fault_t gru_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct gru_thread_state *gts;
 	unsigned long paddr, vaddr;
 	unsigned long expires;
diff --git a/drivers/misc/sgi-gru/grutables.h b/drivers/misc/sgi-gru/grutables.h
index 640daf1994df..cd0756f1e7c4 100644
--- a/drivers/misc/sgi-gru/grutables.h
+++ b/drivers/misc/sgi-gru/grutables.h
@@ -337,7 +337,7 @@ struct gru_thread_state {
 	struct mutex		ts_ctxlock;	/* load/unload CTX lock */
 	struct mm_struct	*ts_mm;		/* mm currently mapped to
 						   context */
-	struct vm_area_struct	*ts_vma;	/* vma of GRU context */
+	struct mm_area	*ts_vma;	/* vma of GRU context */
 	struct gru_state	*ts_gru;	/* GRU where the context is
 						   loaded */
 	struct gru_mm_struct	*ts_gms;	/* asid & ioproc struct */
@@ -607,11 +607,11 @@ struct gru_unload_context_req;
 extern const struct vm_operations_struct gru_vm_ops;
 extern struct device *grudev;
 
-extern struct gru_vma_data *gru_alloc_vma_data(struct vm_area_struct *vma,
+extern struct gru_vma_data *gru_alloc_vma_data(struct mm_area *vma,
 				int tsid);
-extern struct gru_thread_state *gru_find_thread_state(struct vm_area_struct
+extern struct gru_thread_state *gru_find_thread_state(struct mm_area
 				*vma, int tsid);
-extern struct gru_thread_state *gru_alloc_thread_state(struct vm_area_struct
+extern struct gru_thread_state *gru_alloc_thread_state(struct mm_area
 				*vma, int tsid);
 extern struct gru_state *gru_assign_gru_context(struct gru_thread_state *gts);
 extern void gru_load_context(struct gru_thread_state *gts);
@@ -634,12 +634,12 @@ extern int gru_get_exception_detail(unsigned long arg);
 extern int gru_set_context_option(unsigned long address);
 extern int gru_check_context_placement(struct gru_thread_state *gts);
 extern int gru_cpu_fault_map_id(void);
-extern struct vm_area_struct *gru_find_vma(unsigned long vaddr);
+extern struct mm_area *gru_find_vma(unsigned long vaddr);
 extern void gru_flush_all_tlb(struct gru_state *gru);
 extern int gru_proc_init(void);
 extern void gru_proc_exit(void);
 
-extern struct gru_thread_state *gru_alloc_gts(struct vm_area_struct *vma,
+extern struct gru_thread_state *gru_alloc_gts(struct mm_area *vma,
 		int cbr_au_count, int dsr_au_count,
 		unsigned char tlb_preload_count, int options, int tsid);
 extern unsigned long gru_reserve_cb_resources(struct gru_state *gru,
diff --git a/drivers/misc/uacce/uacce.c b/drivers/misc/uacce/uacce.c
index bdc2e6fda782..316f5f5af318 100644
--- a/drivers/misc/uacce/uacce.c
+++ b/drivers/misc/uacce/uacce.c
@@ -200,7 +200,7 @@ static int uacce_fops_release(struct inode *inode, struct file *filep)
 	return 0;
 }
 
-static void uacce_vma_close(struct vm_area_struct *vma)
+static void uacce_vma_close(struct mm_area *vma)
 {
 	struct uacce_queue *q = vma->vm_private_data;
 
@@ -218,7 +218,7 @@ static const struct vm_operations_struct uacce_vm_ops = {
 	.close = uacce_vma_close,
 };
 
-static int uacce_fops_mmap(struct file *filep, struct vm_area_struct *vma)
+static int uacce_fops_mmap(struct file *filep, struct mm_area *vma)
 {
 	struct uacce_queue *q = filep->private_data;
 	struct uacce_device *uacce = q->uacce;
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
index 8dc4f5c493fc..389461af2b3e 100644
--- a/drivers/mtd/mtdchar.c
+++ b/drivers/mtd/mtdchar.c
@@ -1374,7 +1374,7 @@ static unsigned mtdchar_mmap_capabilities(struct file *file)
 /*
  * set up a mapping for shared memory segments
  */
-static int mtdchar_mmap(struct file *file, struct vm_area_struct *vma)
+static int mtdchar_mmap(struct file *file, struct mm_area *vma)
 {
 #ifdef CONFIG_MMU
 	struct mtd_file_info *mfi = file->private_data;
diff --git a/drivers/pci/mmap.c b/drivers/pci/mmap.c
index 8da3347a95c4..183568aa7b8c 100644
--- a/drivers/pci/mmap.c
+++ b/drivers/pci/mmap.c
@@ -22,7 +22,7 @@ static const struct vm_operations_struct pci_phys_vm_ops = {
 };
 
 int pci_mmap_resource_range(struct pci_dev *pdev, int bar,
-			    struct vm_area_struct *vma,
+			    struct mm_area *vma,
 			    enum pci_mmap_state mmap_state, int write_combine)
 {
 	unsigned long size;
@@ -56,7 +56,7 @@ int pci_mmap_resource_range(struct pci_dev *pdev, int bar,
 #if (defined(CONFIG_SYSFS) || defined(CONFIG_PROC_FS)) && \
     (defined(HAVE_PCI_MMAP) || defined(ARCH_GENERIC_PCI_MMAP_RESOURCE))
 
-int pci_mmap_fits(struct pci_dev *pdev, int resno, struct vm_area_struct *vma,
+int pci_mmap_fits(struct pci_dev *pdev, int resno, struct mm_area *vma,
 		  enum pci_mmap_api mmap_api)
 {
 	resource_size_t pci_start = 0, pci_end;
diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c
index 19214ec81fbb..ba40bd4cb2a1 100644
--- a/drivers/pci/p2pdma.c
+++ b/drivers/pci/p2pdma.c
@@ -90,7 +90,7 @@ static ssize_t published_show(struct device *dev, struct device_attribute *attr,
 static DEVICE_ATTR_RO(published);
 
 static int p2pmem_alloc_mmap(struct file *filp, struct kobject *kobj,
-		const struct bin_attribute *attr, struct vm_area_struct *vma)
+		const struct bin_attribute *attr, struct mm_area *vma)
 {
 	struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));
 	size_t len = vma->vm_end - vma->vm_start;
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index c6cda56ca52c..4ceec1061fe5 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -930,7 +930,7 @@ static ssize_t pci_write_legacy_io(struct file *filp, struct kobject *kobj,
  * @filp: open sysfs file
  * @kobj: kobject corresponding to device to be mapped
  * @attr: struct bin_attribute for this file
- * @vma: struct vm_area_struct passed to mmap
+ * @vma: struct mm_area passed to mmap
  *
  * Uses an arch specific callback, pci_mmap_legacy_mem_page_range, to mmap
  * legacy memory space (first meg of bus space) into application virtual
@@ -938,7 +938,7 @@ static ssize_t pci_write_legacy_io(struct file *filp, struct kobject *kobj,
  */
 static int pci_mmap_legacy_mem(struct file *filp, struct kobject *kobj,
 			       const struct bin_attribute *attr,
-			       struct vm_area_struct *vma)
+			       struct mm_area *vma)
 {
 	struct pci_bus *bus = to_pci_bus(kobj_to_dev(kobj));
 
@@ -950,7 +950,7 @@ static int pci_mmap_legacy_mem(struct file *filp, struct kobject *kobj,
  * @filp: open sysfs file
  * @kobj: kobject corresponding to device to be mapped
  * @attr: struct bin_attribute for this file
- * @vma: struct vm_area_struct passed to mmap
+ * @vma: struct mm_area passed to mmap
  *
  * Uses an arch specific callback, pci_mmap_legacy_io_page_range, to mmap
  * legacy IO space (first meg of bus space) into application virtual
@@ -958,7 +958,7 @@ static int pci_mmap_legacy_mem(struct file *filp, struct kobject *kobj,
  */
 static int pci_mmap_legacy_io(struct file *filp, struct kobject *kobj,
 			      const struct bin_attribute *attr,
-			      struct vm_area_struct *vma)
+			      struct mm_area *vma)
 {
 	struct pci_bus *bus = to_pci_bus(kobj_to_dev(kobj));
 
@@ -1056,13 +1056,13 @@ void pci_remove_legacy_files(struct pci_bus *b)
  * pci_mmap_resource - map a PCI resource into user memory space
  * @kobj: kobject for mapping
  * @attr: struct bin_attribute for the file being mapped
- * @vma: struct vm_area_struct passed into the mmap
+ * @vma: struct mm_area passed into the mmap
  * @write_combine: 1 for write_combine mapping
  *
  * Use the regular PCI mapping routines to map a PCI resource into userspace.
  */
 static int pci_mmap_resource(struct kobject *kobj, const struct bin_attribute *attr,
-			     struct vm_area_struct *vma, int write_combine)
+			     struct mm_area *vma, int write_combine)
 {
 	struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));
 	int bar = (unsigned long)attr->private;
@@ -1087,14 +1087,14 @@ static int pci_mmap_resource(struct kobject *kobj, const struct bin_attribute *a
 
 static int pci_mmap_resource_uc(struct file *filp, struct kobject *kobj,
 				const struct bin_attribute *attr,
-				struct vm_area_struct *vma)
+				struct mm_area *vma)
 {
 	return pci_mmap_resource(kobj, attr, vma, 0);
 }
 
 static int pci_mmap_resource_wc(struct file *filp, struct kobject *kobj,
 				const struct bin_attribute *attr,
-				struct vm_area_struct *vma)
+				struct mm_area *vma)
 {
 	return pci_mmap_resource(kobj, attr, vma, 1);
 }
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h
index b81e99cd4b62..3595cd20c401 100644
--- a/drivers/pci/pci.h
+++ b/drivers/pci/pci.h
@@ -99,7 +99,7 @@ enum pci_mmap_api {
 	PCI_MMAP_SYSFS,	/* mmap on /sys/bus/pci/devices/<BDF>/resource<N> */
 	PCI_MMAP_PROCFS	/* mmap on /proc/bus/pci/<BDF> */
 };
-int pci_mmap_fits(struct pci_dev *pdev, int resno, struct vm_area_struct *vmai,
+int pci_mmap_fits(struct pci_dev *pdev, int resno, struct mm_area *vmai,
 		  enum pci_mmap_api mmap_api);
 
 bool pci_reset_supported(struct pci_dev *dev);
diff --git a/drivers/pci/proc.c b/drivers/pci/proc.c
index 9348a0fb8084..bb9b1a16c6b4 100644
--- a/drivers/pci/proc.c
+++ b/drivers/pci/proc.c
@@ -240,7 +240,7 @@ static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd,
 }
 
 #ifdef HAVE_PCI_MMAP
-static int proc_bus_pci_mmap(struct file *file, struct vm_area_struct *vma)
+static int proc_bus_pci_mmap(struct file *file, struct mm_area *vma)
 {
 	struct pci_dev *dev = pde_data(file_inode(file));
 	struct pci_filp_private *fpriv = file->private_data;
diff --git a/drivers/platform/x86/intel/pmt/class.c b/drivers/platform/x86/intel/pmt/class.c
index 7233b654bbad..1757c1109a16 100644
--- a/drivers/platform/x86/intel/pmt/class.c
+++ b/drivers/platform/x86/intel/pmt/class.c
@@ -105,7 +105,7 @@ intel_pmt_read(struct file *filp, struct kobject *kobj,
 
 static int
 intel_pmt_mmap(struct file *filp, struct kobject *kobj,
-		const struct bin_attribute *attr, struct vm_area_struct *vma)
+		const struct bin_attribute *attr, struct mm_area *vma)
 {
 	struct intel_pmt_entry *entry = container_of(attr,
 						     struct intel_pmt_entry,
diff --git a/drivers/ptp/ptp_vmclock.c b/drivers/ptp/ptp_vmclock.c
index b3a83b03d9c1..b1dddbc99ce7 100644
--- a/drivers/ptp/ptp_vmclock.c
+++ b/drivers/ptp/ptp_vmclock.c
@@ -357,7 +357,7 @@ static struct ptp_clock *vmclock_ptp_register(struct device *dev,
 	return ptp_clock_register(&st->ptp_clock_info, dev);
 }
 
-static int vmclock_miscdev_mmap(struct file *fp, struct vm_area_struct *vma)
+static int vmclock_miscdev_mmap(struct file *fp, struct mm_area *vma)
 {
 	struct vmclock_state *st = container_of(fp->private_data,
 						struct vmclock_state, miscdev);
diff --git a/drivers/rapidio/devices/rio_mport_cdev.c b/drivers/rapidio/devices/rio_mport_cdev.c
index cbf531d0ba68..e6f7cd47e550 100644
--- a/drivers/rapidio/devices/rio_mport_cdev.c
+++ b/drivers/rapidio/devices/rio_mport_cdev.c
@@ -2173,7 +2173,7 @@ static void mport_release_mapping(struct kref *ref)
 	kfree(map);
 }
 
-static void mport_mm_open(struct vm_area_struct *vma)
+static void mport_mm_open(struct mm_area *vma)
 {
 	struct rio_mport_mapping *map = vma->vm_private_data;
 
@@ -2181,7 +2181,7 @@ static void mport_mm_open(struct vm_area_struct *vma)
 	kref_get(&map->ref);
 }
 
-static void mport_mm_close(struct vm_area_struct *vma)
+static void mport_mm_close(struct mm_area *vma)
 {
 	struct rio_mport_mapping *map = vma->vm_private_data;
 
@@ -2196,7 +2196,7 @@ static const struct vm_operations_struct vm_ops = {
 	.close = mport_mm_close,
 };
 
-static int mport_cdev_mmap(struct file *filp, struct vm_area_struct *vma)
+static int mport_cdev_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct mport_cdev_priv *priv = filp->private_data;
 	struct mport_dev *md;
diff --git a/drivers/sbus/char/flash.c b/drivers/sbus/char/flash.c
index 6524a4a19109..20e2687a4cc7 100644
--- a/drivers/sbus/char/flash.c
+++ b/drivers/sbus/char/flash.c
@@ -31,7 +31,7 @@ static struct {
 } flash;
 
 static int
-flash_mmap(struct file *file, struct vm_area_struct *vma)
+flash_mmap(struct file *file, struct mm_area *vma)
 {
 	unsigned long addr;
 	unsigned long size;
diff --git a/drivers/sbus/char/oradax.c b/drivers/sbus/char/oradax.c
index a536dd6f4f7c..151f9f99565f 100644
--- a/drivers/sbus/char/oradax.c
+++ b/drivers/sbus/char/oradax.c
@@ -208,7 +208,7 @@ static ssize_t dax_read(struct file *filp, char __user *buf,
 			size_t count, loff_t *ppos);
 static ssize_t dax_write(struct file *filp, const char __user *buf,
 			 size_t count, loff_t *ppos);
-static int dax_devmap(struct file *f, struct vm_area_struct *vma);
+static int dax_devmap(struct file *f, struct mm_area *vma);
 static int dax_close(struct inode *i, struct file *f);
 
 static const struct file_operations dax_fops = {
@@ -368,7 +368,7 @@ static void __exit dax_detach(void)
 module_exit(dax_detach);
 
 /* map completion area */
-static int dax_devmap(struct file *f, struct vm_area_struct *vma)
+static int dax_devmap(struct file *f, struct mm_area *vma)
 {
 	struct dax_ctx *ctx = (struct dax_ctx *)f->private_data;
 	size_t len = vma->vm_end - vma->vm_start;
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index effb7e768165..a20fc2341c3c 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -1214,7 +1214,7 @@ sg_fasync(int fd, struct file *filp, int mode)
 static vm_fault_t
 sg_vma_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	Sg_fd *sfp;
 	unsigned long offset, len, sa;
 	Sg_scatter_hold *rsv_schp;
@@ -1253,7 +1253,7 @@ static const struct vm_operations_struct sg_mmap_vm_ops = {
 };
 
 static int
-sg_mmap(struct file *filp, struct vm_area_struct *vma)
+sg_mmap(struct file *filp, struct mm_area *vma)
 {
 	Sg_fd *sfp;
 	unsigned long req_sz, len, sa;
diff --git a/drivers/soc/aspeed/aspeed-lpc-ctrl.c b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
index ee58151bd69e..9a64d76880a9 100644
--- a/drivers/soc/aspeed/aspeed-lpc-ctrl.c
+++ b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
@@ -46,7 +46,7 @@ static struct aspeed_lpc_ctrl *file_aspeed_lpc_ctrl(struct file *file)
 			miscdev);
 }
 
-static int aspeed_lpc_ctrl_mmap(struct file *file, struct vm_area_struct *vma)
+static int aspeed_lpc_ctrl_mmap(struct file *file, struct mm_area *vma)
 {
 	struct aspeed_lpc_ctrl *lpc_ctrl = file_aspeed_lpc_ctrl(file);
 	unsigned long vsize = vma->vm_end - vma->vm_start;
diff --git a/drivers/soc/aspeed/aspeed-p2a-ctrl.c b/drivers/soc/aspeed/aspeed-p2a-ctrl.c
index 6cc943744e12..8ad07f33f25c 100644
--- a/drivers/soc/aspeed/aspeed-p2a-ctrl.c
+++ b/drivers/soc/aspeed/aspeed-p2a-ctrl.c
@@ -97,7 +97,7 @@ static void aspeed_p2a_disable_bridge(struct aspeed_p2a_ctrl *p2a_ctrl)
 	regmap_update_bits(p2a_ctrl->regmap, SCU180, SCU180_ENP2A, 0);
 }
 
-static int aspeed_p2a_mmap(struct file *file, struct vm_area_struct *vma)
+static int aspeed_p2a_mmap(struct file *file, struct mm_area *vma)
 {
 	unsigned long vsize;
 	pgprot_t prot;
diff --git a/drivers/soc/qcom/rmtfs_mem.c b/drivers/soc/qcom/rmtfs_mem.c
index 1b32469f2789..f07526023635 100644
--- a/drivers/soc/qcom/rmtfs_mem.c
+++ b/drivers/soc/qcom/rmtfs_mem.c
@@ -129,7 +129,7 @@ static const struct class rmtfs_class = {
 	.name           = "rmtfs",
 };
 
-static int qcom_rmtfs_mem_mmap(struct file *filep, struct vm_area_struct *vma)
+static int qcom_rmtfs_mem_mmap(struct file *filep, struct mm_area *vma)
 {
 	struct qcom_rmtfs_mem *rmtfs_mem = filep->private_data;
 
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm.h b/drivers/staging/media/atomisp/include/hmm/hmm.h
index a7aef27f54de..6c20072ca7e0 100644
--- a/drivers/staging/media/atomisp/include/hmm/hmm.h
+++ b/drivers/staging/media/atomisp/include/hmm/hmm.h
@@ -63,7 +63,7 @@ void hmm_flush_vmap(ia_css_ptr virt);
  * virt must be the start address of ISP memory (return by hmm_alloc),
  * do not pass any other address.
  */
-int hmm_mmap(struct vm_area_struct *vma, ia_css_ptr virt);
+int hmm_mmap(struct mm_area *vma, ia_css_ptr virt);
 
 extern struct hmm_bo_device bo_device;
 
diff --git a/drivers/staging/media/atomisp/include/hmm/hmm_bo.h b/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
index e09ac29ac43d..9546a39e747b 100644
--- a/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
+++ b/drivers/staging/media/atomisp/include/hmm/hmm_bo.h
@@ -232,7 +232,7 @@ void hmm_bo_vunmap(struct hmm_buffer_object *bo);
  *
  * vma->vm_flags will be set to (VM_RESERVED | VM_IO).
  */
-int hmm_bo_mmap(struct vm_area_struct *vma,
+int hmm_bo_mmap(struct mm_area *vma,
 		struct hmm_buffer_object *bo);
 
 /*
diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm.c b/drivers/staging/media/atomisp/pci/hmm/hmm.c
index 84102c3aaf97..64712310f850 100644
--- a/drivers/staging/media/atomisp/pci/hmm/hmm.c
+++ b/drivers/staging/media/atomisp/pci/hmm/hmm.c
@@ -522,7 +522,7 @@ phys_addr_t hmm_virt_to_phys(ia_css_ptr virt)
 	return page_to_phys(bo->pages[idx]) + offset;
 }
 
-int hmm_mmap(struct vm_area_struct *vma, ia_css_ptr virt)
+int hmm_mmap(struct mm_area *vma, ia_css_ptr virt)
 {
 	struct hmm_buffer_object *bo;
 
diff --git a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
index 224ca8d42721..15c48650d883 100644
--- a/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
+++ b/drivers/staging/media/atomisp/pci/hmm/hmm_bo.c
@@ -974,7 +974,7 @@ void hmm_bo_unref(struct hmm_buffer_object *bo)
 	kref_put(&bo->kref, kref_hmm_bo_release);
 }
 
-static void hmm_bo_vm_open(struct vm_area_struct *vma)
+static void hmm_bo_vm_open(struct mm_area *vma)
 {
 	struct hmm_buffer_object *bo =
 	    (struct hmm_buffer_object *)vma->vm_private_data;
@@ -992,7 +992,7 @@ static void hmm_bo_vm_open(struct vm_area_struct *vma)
 	mutex_unlock(&bo->mutex);
 }
 
-static void hmm_bo_vm_close(struct vm_area_struct *vma)
+static void hmm_bo_vm_close(struct mm_area *vma)
 {
 	struct hmm_buffer_object *bo =
 	    (struct hmm_buffer_object *)vma->vm_private_data;
@@ -1021,7 +1021,7 @@ static const struct vm_operations_struct hmm_bo_vm_ops = {
 /*
  * mmap the bo to user space.
  */
-int hmm_bo_mmap(struct vm_area_struct *vma, struct hmm_buffer_object *bo)
+int hmm_bo_mmap(struct mm_area *vma, struct hmm_buffer_object *bo)
 {
 	unsigned int start, end;
 	unsigned int virt;
diff --git a/drivers/staging/vme_user/vme.c b/drivers/staging/vme_user/vme.c
index 42304c9f83a2..ed589a97da4f 100644
--- a/drivers/staging/vme_user/vme.c
+++ b/drivers/staging/vme_user/vme.c
@@ -745,7 +745,7 @@ EXPORT_SYMBOL(vme_master_rmw);
  *         resource or -EFAULT if map exceeds window size. Other generic mmap
  *         errors may also be returned.
  */
-int vme_master_mmap(struct vme_resource *resource, struct vm_area_struct *vma)
+int vme_master_mmap(struct vme_resource *resource, struct mm_area *vma)
 {
 	struct vme_bridge *bridge = find_bridge(resource);
 	struct vme_master_resource *image;
diff --git a/drivers/staging/vme_user/vme.h b/drivers/staging/vme_user/vme.h
index 7753e736f9fd..a1505b68907f 100644
--- a/drivers/staging/vme_user/vme.h
+++ b/drivers/staging/vme_user/vme.h
@@ -151,7 +151,7 @@ ssize_t vme_master_read(struct vme_resource *, void *, size_t, loff_t);
 ssize_t vme_master_write(struct vme_resource *, void *, size_t, loff_t);
 unsigned int vme_master_rmw(struct vme_resource *, unsigned int, unsigned int,
 			    unsigned int, loff_t);
-int vme_master_mmap(struct vme_resource *resource, struct vm_area_struct *vma);
+int vme_master_mmap(struct vme_resource *resource, struct mm_area *vma);
 void vme_master_free(struct vme_resource *);
 
 struct vme_resource *vme_dma_request(struct vme_dev *, u32);
diff --git a/drivers/staging/vme_user/vme_user.c b/drivers/staging/vme_user/vme_user.c
index 5829a4141561..fd777648698d 100644
--- a/drivers/staging/vme_user/vme_user.c
+++ b/drivers/staging/vme_user/vme_user.c
@@ -424,14 +424,14 @@ vme_user_unlocked_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 	return ret;
 }
 
-static void vme_user_vm_open(struct vm_area_struct *vma)
+static void vme_user_vm_open(struct mm_area *vma)
 {
 	struct vme_user_vma_priv *vma_priv = vma->vm_private_data;
 
 	refcount_inc(&vma_priv->refcnt);
 }
 
-static void vme_user_vm_close(struct vm_area_struct *vma)
+static void vme_user_vm_close(struct mm_area *vma)
 {
 	struct vme_user_vma_priv *vma_priv = vma->vm_private_data;
 	unsigned int minor = vma_priv->minor;
@@ -451,7 +451,7 @@ static const struct vm_operations_struct vme_user_vm_ops = {
 	.close = vme_user_vm_close,
 };
 
-static int vme_user_master_mmap(unsigned int minor, struct vm_area_struct *vma)
+static int vme_user_master_mmap(unsigned int minor, struct mm_area *vma)
 {
 	int err;
 	struct vme_user_vma_priv *vma_priv;
@@ -482,7 +482,7 @@ static int vme_user_master_mmap(unsigned int minor, struct vm_area_struct *vma)
 	return 0;
 }
 
-static int vme_user_mmap(struct file *file, struct vm_area_struct *vma)
+static int vme_user_mmap(struct file *file, struct mm_area *vma)
 {
 	unsigned int minor = iminor(file_inode(file));
 
diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c
index 0f5d820af119..eaff895205b4 100644
--- a/drivers/target/target_core_user.c
+++ b/drivers/target/target_core_user.c
@@ -1823,7 +1823,7 @@ static int tcmu_irqcontrol(struct uio_info *info, s32 irq_on)
  * mmap code from uio.c. Copied here because we want to hook mmap()
  * and this stuff must come along.
  */
-static int tcmu_find_mem_index(struct vm_area_struct *vma)
+static int tcmu_find_mem_index(struct mm_area *vma)
 {
 	struct tcmu_dev *udev = vma->vm_private_data;
 	struct uio_info *info = &udev->uio_info;
@@ -1860,7 +1860,7 @@ static struct page *tcmu_try_get_data_page(struct tcmu_dev *udev, uint32_t dpi)
 	return NULL;
 }
 
-static void tcmu_vma_open(struct vm_area_struct *vma)
+static void tcmu_vma_open(struct mm_area *vma)
 {
 	struct tcmu_dev *udev = vma->vm_private_data;
 
@@ -1869,7 +1869,7 @@ static void tcmu_vma_open(struct vm_area_struct *vma)
 	kref_get(&udev->kref);
 }
 
-static void tcmu_vma_close(struct vm_area_struct *vma)
+static void tcmu_vma_close(struct mm_area *vma)
 {
 	struct tcmu_dev *udev = vma->vm_private_data;
 
@@ -1924,7 +1924,7 @@ static const struct vm_operations_struct tcmu_vm_ops = {
 	.fault = tcmu_vma_fault,
 };
 
-static int tcmu_mmap(struct uio_info *info, struct vm_area_struct *vma)
+static int tcmu_mmap(struct uio_info *info, struct mm_area *vma)
 {
 	struct tcmu_dev *udev = container_of(info, struct tcmu_dev, uio_info);
 
diff --git a/drivers/tee/optee/call.c b/drivers/tee/optee/call.c
index 16eb953e14bb..24db89ca4e26 100644
--- a/drivers/tee/optee/call.c
+++ b/drivers/tee/optee/call.c
@@ -611,7 +611,7 @@ static bool is_normal_memory(pgprot_t p)
 static int __check_mem_type(struct mm_struct *mm, unsigned long start,
 				unsigned long end)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, start);
 
 	for_each_vma_range(vmi, vma, end) {
diff --git a/drivers/tee/tee_shm.c b/drivers/tee/tee_shm.c
index daf6e5cfd59a..c6b120e0d3ae 100644
--- a/drivers/tee/tee_shm.c
+++ b/drivers/tee/tee_shm.c
@@ -434,7 +434,7 @@ static int tee_shm_fop_release(struct inode *inode, struct file *filp)
 	return 0;
 }
 
-static int tee_shm_fop_mmap(struct file *filp, struct vm_area_struct *vma)
+static int tee_shm_fop_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct tee_shm *shm = filp->private_data;
 	size_t size = vma->vm_end - vma->vm_start;
diff --git a/drivers/uio/uio.c b/drivers/uio/uio.c
index d93ed4e86a17..93d41eddc33c 100644
--- a/drivers/uio/uio.c
+++ b/drivers/uio/uio.c
@@ -669,7 +669,7 @@ static ssize_t uio_write(struct file *filep, const char __user *buf,
 	return retval ? retval : sizeof(s32);
 }
 
-static int uio_find_mem_index(struct vm_area_struct *vma)
+static int uio_find_mem_index(struct mm_area *vma)
 {
 	struct uio_device *idev = vma->vm_private_data;
 
@@ -726,7 +726,7 @@ static const struct vm_operations_struct uio_logical_vm_ops = {
 	.fault = uio_vma_fault,
 };
 
-static int uio_mmap_logical(struct vm_area_struct *vma)
+static int uio_mmap_logical(struct mm_area *vma)
 {
 	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_ops = &uio_logical_vm_ops;
@@ -739,7 +739,7 @@ static const struct vm_operations_struct uio_physical_vm_ops = {
 #endif
 };
 
-static int uio_mmap_physical(struct vm_area_struct *vma)
+static int uio_mmap_physical(struct mm_area *vma)
 {
 	struct uio_device *idev = vma->vm_private_data;
 	int mi = uio_find_mem_index(vma);
@@ -774,7 +774,7 @@ static int uio_mmap_physical(struct vm_area_struct *vma)
 			       vma->vm_page_prot);
 }
 
-static int uio_mmap_dma_coherent(struct vm_area_struct *vma)
+static int uio_mmap_dma_coherent(struct mm_area *vma)
 {
 	struct uio_device *idev = vma->vm_private_data;
 	struct uio_mem *mem;
@@ -817,7 +817,7 @@ static int uio_mmap_dma_coherent(struct vm_area_struct *vma)
 	return ret;
 }
 
-static int uio_mmap(struct file *filep, struct vm_area_struct *vma)
+static int uio_mmap(struct file *filep, struct mm_area *vma)
 {
 	struct uio_listener *listener = filep->private_data;
 	struct uio_device *idev = listener->dev;
diff --git a/drivers/uio/uio_hv_generic.c b/drivers/uio/uio_hv_generic.c
index 1b19b5647495..5283c75d0860 100644
--- a/drivers/uio/uio_hv_generic.c
+++ b/drivers/uio/uio_hv_generic.c
@@ -136,7 +136,7 @@ static void hv_uio_rescind(struct vmbus_channel *channel)
  */
 static int hv_uio_ring_mmap(struct file *filp, struct kobject *kobj,
 			    const struct bin_attribute *attr,
-			    struct vm_area_struct *vma)
+			    struct mm_area *vma)
 {
 	struct vmbus_channel *channel
 		= container_of(kobj, struct vmbus_channel, kobj);
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
index f6ce6e26e0d4..328bdbc57cf0 100644
--- a/drivers/usb/core/devio.c
+++ b/drivers/usb/core/devio.c
@@ -205,7 +205,7 @@ static void dec_usb_memory_use_count(struct usb_memory *usbm, int *count)
 	}
 }
 
-static void usbdev_vm_open(struct vm_area_struct *vma)
+static void usbdev_vm_open(struct mm_area *vma)
 {
 	struct usb_memory *usbm = vma->vm_private_data;
 	unsigned long flags;
@@ -215,7 +215,7 @@ static void usbdev_vm_open(struct vm_area_struct *vma)
 	spin_unlock_irqrestore(&usbm->ps->lock, flags);
 }
 
-static void usbdev_vm_close(struct vm_area_struct *vma)
+static void usbdev_vm_close(struct mm_area *vma)
 {
 	struct usb_memory *usbm = vma->vm_private_data;
 
@@ -227,7 +227,7 @@ static const struct vm_operations_struct usbdev_vm_ops = {
 	.close = usbdev_vm_close
 };
 
-static int usbdev_mmap(struct file *file, struct vm_area_struct *vma)
+static int usbdev_mmap(struct file *file, struct mm_area *vma)
 {
 	struct usb_memory *usbm = NULL;
 	struct usb_dev_state *ps = file->private_data;
diff --git a/drivers/usb/gadget/function/uvc_queue.c b/drivers/usb/gadget/function/uvc_queue.c
index 9a1bbd79ff5a..519586dfeb0f 100644
--- a/drivers/usb/gadget/function/uvc_queue.c
+++ b/drivers/usb/gadget/function/uvc_queue.c
@@ -212,7 +212,7 @@ __poll_t uvcg_queue_poll(struct uvc_video_queue *queue, struct file *file,
 	return vb2_poll(&queue->queue, file, wait);
 }
 
-int uvcg_queue_mmap(struct uvc_video_queue *queue, struct vm_area_struct *vma)
+int uvcg_queue_mmap(struct uvc_video_queue *queue, struct mm_area *vma)
 {
 	return vb2_mmap(&queue->queue, vma);
 }
diff --git a/drivers/usb/gadget/function/uvc_queue.h b/drivers/usb/gadget/function/uvc_queue.h
index b54becc570a3..4f8a2d2ef2ae 100644
--- a/drivers/usb/gadget/function/uvc_queue.h
+++ b/drivers/usb/gadget/function/uvc_queue.h
@@ -83,7 +83,7 @@ int uvcg_dequeue_buffer(struct uvc_video_queue *queue,
 __poll_t uvcg_queue_poll(struct uvc_video_queue *queue,
 			     struct file *file, poll_table *wait);
 
-int uvcg_queue_mmap(struct uvc_video_queue *queue, struct vm_area_struct *vma);
+int uvcg_queue_mmap(struct uvc_video_queue *queue, struct mm_area *vma);
 
 #ifndef CONFIG_MMU
 unsigned long uvcg_queue_get_unmapped_area(struct uvc_video_queue *queue,
diff --git a/drivers/usb/gadget/function/uvc_v4l2.c b/drivers/usb/gadget/function/uvc_v4l2.c
index fc9a8d31a1e9..f0016d03f5bb 100644
--- a/drivers/usb/gadget/function/uvc_v4l2.c
+++ b/drivers/usb/gadget/function/uvc_v4l2.c
@@ -702,7 +702,7 @@ uvc_v4l2_release(struct file *file)
 }
 
 static int
-uvc_v4l2_mmap(struct file *file, struct vm_area_struct *vma)
+uvc_v4l2_mmap(struct file *file, struct mm_area *vma)
 {
 	struct video_device *vdev = video_devdata(file);
 	struct uvc_device *uvc = video_get_drvdata(vdev);
diff --git a/drivers/usb/mon/mon_bin.c b/drivers/usb/mon/mon_bin.c
index c93b43f5bc46..765efbb61818 100644
--- a/drivers/usb/mon/mon_bin.c
+++ b/drivers/usb/mon/mon_bin.c
@@ -1222,7 +1222,7 @@ mon_bin_poll(struct file *file, struct poll_table_struct *wait)
  * open and close: just keep track of how many times the device is
  * mapped, to use the proper memory allocation function.
  */
-static void mon_bin_vma_open(struct vm_area_struct *vma)
+static void mon_bin_vma_open(struct mm_area *vma)
 {
 	struct mon_reader_bin *rp = vma->vm_private_data;
 	unsigned long flags;
@@ -1232,7 +1232,7 @@ static void mon_bin_vma_open(struct vm_area_struct *vma)
 	spin_unlock_irqrestore(&rp->b_lock, flags);
 }
 
-static void mon_bin_vma_close(struct vm_area_struct *vma)
+static void mon_bin_vma_close(struct mm_area *vma)
 {
 	unsigned long flags;
 
@@ -1272,7 +1272,7 @@ static const struct vm_operations_struct mon_bin_vm_ops = {
 	.fault =    mon_bin_vma_fault,
 };
 
-static int mon_bin_mmap(struct file *filp, struct vm_area_struct *vma)
+static int mon_bin_mmap(struct file *filp, struct mm_area *vma)
 {
 	/* don't do anything here: "fault" will set up page table entries */
 	vma->vm_ops = &mon_bin_vm_ops;
diff --git a/drivers/vdpa/vdpa_user/iova_domain.c b/drivers/vdpa/vdpa_user/iova_domain.c
index 58116f89d8da..372456ffd5a3 100644
--- a/drivers/vdpa/vdpa_user/iova_domain.c
+++ b/drivers/vdpa/vdpa_user/iova_domain.c
@@ -532,7 +532,7 @@ static const struct vm_operations_struct vduse_domain_mmap_ops = {
 	.fault = vduse_domain_mmap_fault,
 };
 
-static int vduse_domain_mmap(struct file *file, struct vm_area_struct *vma)
+static int vduse_domain_mmap(struct file *file, struct mm_area *vma)
 {
 	struct vduse_iova_domain *domain = file->private_data;
 
diff --git a/drivers/vfio/cdx/main.c b/drivers/vfio/cdx/main.c
index 5dd5f5ad7686..81d6e3d2293d 100644
--- a/drivers/vfio/cdx/main.c
+++ b/drivers/vfio/cdx/main.c
@@ -233,7 +233,7 @@ static long vfio_cdx_ioctl(struct vfio_device *core_vdev,
 }
 
 static int vfio_cdx_mmap_mmio(struct vfio_cdx_region region,
-			      struct vm_area_struct *vma)
+			      struct mm_area *vma)
 {
 	u64 size = vma->vm_end - vma->vm_start;
 	u64 pgoff, base;
@@ -253,7 +253,7 @@ static int vfio_cdx_mmap_mmio(struct vfio_cdx_region region,
 }
 
 static int vfio_cdx_mmap(struct vfio_device *core_vdev,
-			 struct vm_area_struct *vma)
+			 struct mm_area *vma)
 {
 	struct vfio_cdx_device *vdev =
 		container_of(core_vdev, struct vfio_cdx_device, vdev);
diff --git a/drivers/vfio/fsl-mc/vfio_fsl_mc.c b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
index f65d91c01f2e..27b03c09f016 100644
--- a/drivers/vfio/fsl-mc/vfio_fsl_mc.c
+++ b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
@@ -357,7 +357,7 @@ static ssize_t vfio_fsl_mc_write(struct vfio_device *core_vdev,
 }
 
 static int vfio_fsl_mc_mmap_mmio(struct vfio_fsl_mc_region region,
-				 struct vm_area_struct *vma)
+				 struct mm_area *vma)
 {
 	u64 size = vma->vm_end - vma->vm_start;
 	u64 pgoff, base;
@@ -382,7 +382,7 @@ static int vfio_fsl_mc_mmap_mmio(struct vfio_fsl_mc_region region,
 }
 
 static int vfio_fsl_mc_mmap(struct vfio_device *core_vdev,
-			    struct vm_area_struct *vma)
+			    struct mm_area *vma)
 {
 	struct vfio_fsl_mc_device *vdev =
 		container_of(core_vdev, struct vfio_fsl_mc_device, vdev);
diff --git a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
index 451c639299eb..e61c19772dc2 100644
--- a/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
+++ b/drivers/vfio/pci/hisilicon/hisi_acc_vfio_pci.c
@@ -1218,7 +1218,7 @@ static int hisi_acc_pci_rw_access_check(struct vfio_device *core_vdev,
 }
 
 static int hisi_acc_vfio_pci_mmap(struct vfio_device *core_vdev,
-				  struct vm_area_struct *vma)
+				  struct mm_area *vma)
 {
 	struct vfio_pci_core_device *vdev =
 		container_of(core_vdev, struct vfio_pci_core_device, vdev);
diff --git a/drivers/vfio/pci/nvgrace-gpu/main.c b/drivers/vfio/pci/nvgrace-gpu/main.c
index e5ac39c4cc6b..935332b63571 100644
--- a/drivers/vfio/pci/nvgrace-gpu/main.c
+++ b/drivers/vfio/pci/nvgrace-gpu/main.c
@@ -131,7 +131,7 @@ static void nvgrace_gpu_close_device(struct vfio_device *core_vdev)
 }
 
 static int nvgrace_gpu_mmap(struct vfio_device *core_vdev,
-			    struct vm_area_struct *vma)
+			    struct mm_area *vma)
 {
 	struct nvgrace_gpu_pci_core_device *nvdev =
 		container_of(core_vdev, struct nvgrace_gpu_pci_core_device,
diff --git a/drivers/vfio/pci/vfio_pci_core.c b/drivers/vfio/pci/vfio_pci_core.c
index 35f9046af315..3e24952b7309 100644
--- a/drivers/vfio/pci/vfio_pci_core.c
+++ b/drivers/vfio/pci/vfio_pci_core.c
@@ -1629,7 +1629,7 @@ void vfio_pci_memory_unlock_and_restore(struct vfio_pci_core_device *vdev, u16 c
 	up_write(&vdev->memory_lock);
 }
 
-static unsigned long vma_to_pfn(struct vm_area_struct *vma)
+static unsigned long vma_to_pfn(struct mm_area *vma)
 {
 	struct vfio_pci_core_device *vdev = vma->vm_private_data;
 	int index = vma->vm_pgoff >> (VFIO_PCI_OFFSET_SHIFT - PAGE_SHIFT);
@@ -1644,7 +1644,7 @@ static unsigned long vma_to_pfn(struct vm_area_struct *vma)
 static vm_fault_t vfio_pci_mmap_huge_fault(struct vm_fault *vmf,
 					   unsigned int order)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct vfio_pci_core_device *vdev = vma->vm_private_data;
 	unsigned long pfn, pgoff = vmf->pgoff - vma->vm_pgoff;
 	vm_fault_t ret = VM_FAULT_SIGBUS;
@@ -1708,7 +1708,7 @@ static const struct vm_operations_struct vfio_pci_mmap_ops = {
 #endif
 };
 
-int vfio_pci_core_mmap(struct vfio_device *core_vdev, struct vm_area_struct *vma)
+int vfio_pci_core_mmap(struct vfio_device *core_vdev, struct mm_area *vma)
 {
 	struct vfio_pci_core_device *vdev =
 		container_of(core_vdev, struct vfio_pci_core_device, vdev);
diff --git a/drivers/vfio/platform/vfio_platform_common.c b/drivers/vfio/platform/vfio_platform_common.c
index 3bf1043cd795..194cd554d8e8 100644
--- a/drivers/vfio/platform/vfio_platform_common.c
+++ b/drivers/vfio/platform/vfio_platform_common.c
@@ -550,7 +550,7 @@ ssize_t vfio_platform_write(struct vfio_device *core_vdev, const char __user *bu
 EXPORT_SYMBOL_GPL(vfio_platform_write);
 
 static int vfio_platform_mmap_mmio(struct vfio_platform_region region,
-				   struct vm_area_struct *vma)
+				   struct mm_area *vma)
 {
 	u64 req_len, pgoff, req_start;
 
@@ -569,7 +569,7 @@ static int vfio_platform_mmap_mmio(struct vfio_platform_region region,
 			       req_len, vma->vm_page_prot);
 }
 
-int vfio_platform_mmap(struct vfio_device *core_vdev, struct vm_area_struct *vma)
+int vfio_platform_mmap(struct vfio_device *core_vdev, struct mm_area *vma)
 {
 	struct vfio_platform_device *vdev =
 		container_of(core_vdev, struct vfio_platform_device, vdev);
diff --git a/drivers/vfio/platform/vfio_platform_private.h b/drivers/vfio/platform/vfio_platform_private.h
index 8d8fab516849..a7355a03e43c 100644
--- a/drivers/vfio/platform/vfio_platform_private.h
+++ b/drivers/vfio/platform/vfio_platform_private.h
@@ -92,7 +92,7 @@ ssize_t vfio_platform_write(struct vfio_device *core_vdev,
 			    const char __user *buf,
 			    size_t count, loff_t *ppos);
 int vfio_platform_mmap(struct vfio_device *core_vdev,
-		       struct vm_area_struct *vma);
+		       struct mm_area *vma);
 
 int vfio_platform_irq_init(struct vfio_platform_device *vdev);
 void vfio_platform_irq_cleanup(struct vfio_platform_device *vdev);
diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index 0ac56072af9f..acf89ab4e254 100644
--- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c
@@ -518,7 +518,7 @@ static void vfio_batch_fini(struct vfio_batch *batch)
 		free_page((unsigned long)batch->pages);
 }
 
-static int follow_fault_pfn(struct vm_area_struct *vma, struct mm_struct *mm,
+static int follow_fault_pfn(struct mm_area *vma, struct mm_struct *mm,
 			    unsigned long vaddr, unsigned long *pfn,
 			    unsigned long *addr_mask, bool write_fault)
 {
@@ -567,7 +567,7 @@ static long vaddr_get_pfns(struct mm_struct *mm, unsigned long vaddr,
 			   struct vfio_batch *batch)
 {
 	unsigned long pin_pages = min_t(unsigned long, npages, batch->capacity);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned int flags = 0;
 	long ret;
 
diff --git a/drivers/vfio/vfio_main.c b/drivers/vfio/vfio_main.c
index 1fd261efc582..24eca55e4635 100644
--- a/drivers/vfio/vfio_main.c
+++ b/drivers/vfio/vfio_main.c
@@ -1339,7 +1339,7 @@ static ssize_t vfio_device_fops_write(struct file *filep,
 	return device->ops->write(device, buf, count, ppos);
 }
 
-static int vfio_device_fops_mmap(struct file *filep, struct vm_area_struct *vma)
+static int vfio_device_fops_mmap(struct file *filep, struct mm_area *vma)
 {
 	struct vfio_device_file *df = filep->private_data;
 	struct vfio_device *device = df->device;
diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c
index 5a49b5a6d496..00dac20fc834 100644
--- a/drivers/vhost/vdpa.c
+++ b/drivers/vhost/vdpa.c
@@ -1048,7 +1048,7 @@ static int vhost_vdpa_va_map(struct vhost_vdpa *v,
 	struct vhost_dev *dev = &v->vdev;
 	u64 offset, map_size, map_iova = iova;
 	struct vdpa_map_file *map_file;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int ret = 0;
 
 	mmap_read_lock(dev->mm);
@@ -1486,7 +1486,7 @@ static vm_fault_t vhost_vdpa_fault(struct vm_fault *vmf)
 	struct vdpa_device *vdpa = v->vdpa;
 	const struct vdpa_config_ops *ops = vdpa->config;
 	struct vdpa_notification_area notify;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	u16 index = vma->vm_pgoff;
 
 	notify = ops->get_vq_notification(vdpa, index);
@@ -1498,7 +1498,7 @@ static const struct vm_operations_struct vhost_vdpa_vm_ops = {
 	.fault = vhost_vdpa_fault,
 };
 
-static int vhost_vdpa_mmap(struct file *file, struct vm_area_struct *vma)
+static int vhost_vdpa_mmap(struct file *file, struct mm_area *vma)
 {
 	struct vhost_vdpa *v = vma->vm_file->private_data;
 	struct vdpa_device *vdpa = v->vdpa;
diff --git a/drivers/video/fbdev/68328fb.c b/drivers/video/fbdev/68328fb.c
index c24156eb3d0f..8b63b4e1aab0 100644
--- a/drivers/video/fbdev/68328fb.c
+++ b/drivers/video/fbdev/68328fb.c
@@ -91,7 +91,7 @@ static int mc68x328fb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
 			 u_int transp, struct fb_info *info);
 static int mc68x328fb_pan_display(struct fb_var_screeninfo *var,
 			   struct fb_info *info);
-static int mc68x328fb_mmap(struct fb_info *info, struct vm_area_struct *vma);
+static int mc68x328fb_mmap(struct fb_info *info, struct mm_area *vma);
 
 static const struct fb_ops mc68x328fb_ops = {
 	.owner		= THIS_MODULE,
@@ -386,7 +386,7 @@ static int mc68x328fb_pan_display(struct fb_var_screeninfo *var,
      *  Most drivers don't need their own mmap function
      */
 
-static int mc68x328fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int mc68x328fb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 #ifndef MMU
 	/* this is uClinux (no MMU) specific code */
diff --git a/drivers/video/fbdev/atafb.c b/drivers/video/fbdev/atafb.c
index b8ed1c537293..e6fbe997313f 100644
--- a/drivers/video/fbdev/atafb.c
+++ b/drivers/video/fbdev/atafb.c
@@ -291,7 +291,7 @@ static int *MV300_reg = MV300_reg_8bit;
  *			unsigned long arg);
  *
  *	* perform fb specific mmap *
- *	int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);
+ *	int (*fb_mmap)(struct fb_info *info, struct mm_area *vma);
  * } ;
  */
 
diff --git a/drivers/video/fbdev/aty/atyfb_base.c b/drivers/video/fbdev/aty/atyfb_base.c
index 210fd3ac18a4..e9a48e71fbd4 100644
--- a/drivers/video/fbdev/aty/atyfb_base.c
+++ b/drivers/video/fbdev/aty/atyfb_base.c
@@ -253,7 +253,7 @@ static int atyfb_compat_ioctl(struct fb_info *info, u_int cmd, u_long arg)
 #endif
 
 #ifdef __sparc__
-static int atyfb_mmap(struct fb_info *info, struct vm_area_struct *vma);
+static int atyfb_mmap(struct fb_info *info, struct mm_area *vma);
 #endif
 static int atyfb_sync(struct fb_info *info);
 
@@ -1932,7 +1932,7 @@ static int atyfb_sync(struct fb_info *info)
 }
 
 #ifdef __sparc__
-static int atyfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int atyfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct atyfb_par *par = (struct atyfb_par *) info->par;
 	unsigned int size, page, map_size = 0;
diff --git a/drivers/video/fbdev/au1100fb.c b/drivers/video/fbdev/au1100fb.c
index 6251a6b07b3a..4ba693d12560 100644
--- a/drivers/video/fbdev/au1100fb.c
+++ b/drivers/video/fbdev/au1100fb.c
@@ -340,7 +340,7 @@ int au1100fb_fb_pan_display(struct fb_var_screeninfo *var, struct fb_info *fbi)
  * Map video memory in user space. We don't use the generic fb_mmap method mainly
  * to allow the use of the TLB streaming flag (CCA=6)
  */
-int au1100fb_fb_mmap(struct fb_info *fbi, struct vm_area_struct *vma)
+int au1100fb_fb_mmap(struct fb_info *fbi, struct mm_area *vma)
 {
 	struct au1100fb_device *fbdev = to_au1100fb_device(fbi);
 
diff --git a/drivers/video/fbdev/au1200fb.c b/drivers/video/fbdev/au1200fb.c
index ed770222660b..6f741b3ed47f 100644
--- a/drivers/video/fbdev/au1200fb.c
+++ b/drivers/video/fbdev/au1200fb.c
@@ -1232,7 +1232,7 @@ static int au1200fb_fb_blank(int blank_mode, struct fb_info *fbi)
  * Map video memory in user space. We don't use the generic fb_mmap
  * method mainly to allow the use of the TLB streaming flag (CCA=6)
  */
-static int au1200fb_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int au1200fb_fb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct au1200fb_device *fbdev = info->par;
 
diff --git a/drivers/video/fbdev/bw2.c b/drivers/video/fbdev/bw2.c
index e757462af0a6..e56b43e62c57 100644
--- a/drivers/video/fbdev/bw2.c
+++ b/drivers/video/fbdev/bw2.c
@@ -31,7 +31,7 @@
 
 static int bw2_blank(int, struct fb_info *);
 
-static int bw2_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma);
+static int bw2_sbusfb_mmap(struct fb_info *info, struct mm_area *vma);
 static int bw2_sbusfb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg);
 
 /*
@@ -154,7 +154,7 @@ static const struct sbus_mmap_map bw2_mmap_map[] = {
 	{ .size = 0 }
 };
 
-static int bw2_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int bw2_sbusfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct bw2_par *par = (struct bw2_par *)info->par;
 
diff --git a/drivers/video/fbdev/cg14.c b/drivers/video/fbdev/cg14.c
index 5389f8f07346..bc1619331049 100644
--- a/drivers/video/fbdev/cg14.c
+++ b/drivers/video/fbdev/cg14.c
@@ -33,7 +33,7 @@ static int cg14_setcolreg(unsigned, unsigned, unsigned, unsigned,
 			 unsigned, struct fb_info *);
 static int cg14_pan_display(struct fb_var_screeninfo *, struct fb_info *);
 
-static int cg14_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma);
+static int cg14_sbusfb_mmap(struct fb_info *info, struct mm_area *vma);
 static int cg14_sbusfb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg);
 
 /*
@@ -258,7 +258,7 @@ static int cg14_setcolreg(unsigned regno,
 	return 0;
 }
 
-static int cg14_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int cg14_sbusfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct cg14_par *par = (struct cg14_par *) info->par;
 
diff --git a/drivers/video/fbdev/cg3.c b/drivers/video/fbdev/cg3.c
index a58a483014e6..e53243deaf87 100644
--- a/drivers/video/fbdev/cg3.c
+++ b/drivers/video/fbdev/cg3.c
@@ -33,7 +33,7 @@ static int cg3_setcolreg(unsigned, unsigned, unsigned, unsigned,
 			 unsigned, struct fb_info *);
 static int cg3_blank(int, struct fb_info *);
 
-static int cg3_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma);
+static int cg3_sbusfb_mmap(struct fb_info *info, struct mm_area *vma);
 static int cg3_sbusfb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg);
 
 /*
@@ -218,7 +218,7 @@ static const struct sbus_mmap_map cg3_mmap_map[] = {
 	{ .size = 0 }
 };
 
-static int cg3_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int cg3_sbusfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct cg3_par *par = (struct cg3_par *)info->par;
 
diff --git a/drivers/video/fbdev/cg6.c b/drivers/video/fbdev/cg6.c
index 56d74468040a..826bace4fabd 100644
--- a/drivers/video/fbdev/cg6.c
+++ b/drivers/video/fbdev/cg6.c
@@ -39,7 +39,7 @@ static void cg6_copyarea(struct fb_info *info, const struct fb_copyarea *area);
 static int cg6_sync(struct fb_info *);
 static int cg6_pan_display(struct fb_var_screeninfo *, struct fb_info *);
 
-static int cg6_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma);
+static int cg6_sbusfb_mmap(struct fb_info *info, struct mm_area *vma);
 static int cg6_sbusfb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg);
 
 /*
@@ -589,7 +589,7 @@ static const struct sbus_mmap_map cg6_mmap_map[] = {
 	{ .size	= 0 }
 };
 
-static int cg6_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int cg6_sbusfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct cg6_par *par = (struct cg6_par *)info->par;
 
diff --git a/drivers/video/fbdev/controlfb.c b/drivers/video/fbdev/controlfb.c
index 5c5284e8ae0e..0301ea641ba3 100644
--- a/drivers/video/fbdev/controlfb.c
+++ b/drivers/video/fbdev/controlfb.c
@@ -729,7 +729,7 @@ static int controlfb_blank(int blank_mode, struct fb_info *info)
  * Note there's no locking in here; it's done in fb_mmap() in fbmem.c.
  */
 static int controlfb_mmap(struct fb_info *info,
-                       struct vm_area_struct *vma)
+                       struct mm_area *vma)
 {
 	unsigned long mmio_pgoff;
 	unsigned long start;
diff --git a/drivers/video/fbdev/core/fb_chrdev.c b/drivers/video/fbdev/core/fb_chrdev.c
index 4ebd16b7e3b8..50a46c896978 100644
--- a/drivers/video/fbdev/core/fb_chrdev.c
+++ b/drivers/video/fbdev/core/fb_chrdev.c
@@ -311,7 +311,7 @@ static long fb_compat_ioctl(struct file *file, unsigned int cmd,
 }
 #endif
 
-static int fb_mmap(struct file *file, struct vm_area_struct *vma)
+static int fb_mmap(struct file *file, struct mm_area *vma)
 {
 	struct fb_info *info = file_fb_info(file);
 	int res;
diff --git a/drivers/video/fbdev/core/fb_defio.c b/drivers/video/fbdev/core/fb_defio.c
index 4fc93f253e06..01688f93cc91 100644
--- a/drivers/video/fbdev/core/fb_defio.c
+++ b/drivers/video/fbdev/core/fb_defio.c
@@ -243,7 +243,7 @@ static const struct address_space_operations fb_deferred_io_aops = {
 	.dirty_folio	= noop_dirty_folio,
 };
 
-int fb_deferred_io_mmap(struct fb_info *info, struct vm_area_struct *vma)
+int fb_deferred_io_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
 
diff --git a/drivers/video/fbdev/core/fb_io_fops.c b/drivers/video/fbdev/core/fb_io_fops.c
index 3408ff1b2b7a..e00756595b77 100644
--- a/drivers/video/fbdev/core/fb_io_fops.c
+++ b/drivers/video/fbdev/core/fb_io_fops.c
@@ -138,7 +138,7 @@ ssize_t fb_io_write(struct fb_info *info, const char __user *buf, size_t count,
 }
 EXPORT_SYMBOL(fb_io_write);
 
-int fb_io_mmap(struct fb_info *info, struct vm_area_struct *vma)
+int fb_io_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	unsigned long start = info->fix.smem_start;
 	u32 len = info->fix.smem_len;
diff --git a/drivers/video/fbdev/ep93xx-fb.c b/drivers/video/fbdev/ep93xx-fb.c
index 801ef427f1ba..cab3e18fb52e 100644
--- a/drivers/video/fbdev/ep93xx-fb.c
+++ b/drivers/video/fbdev/ep93xx-fb.c
@@ -307,7 +307,7 @@ static int ep93xxfb_check_var(struct fb_var_screeninfo *var,
 	return 0;
 }
 
-static int ep93xxfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int ep93xxfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	unsigned int offset = vma->vm_pgoff << PAGE_SHIFT;
 
diff --git a/drivers/video/fbdev/ffb.c b/drivers/video/fbdev/ffb.c
index 34b6abff9493..75c2aaf77b81 100644
--- a/drivers/video/fbdev/ffb.c
+++ b/drivers/video/fbdev/ffb.c
@@ -39,7 +39,7 @@ static void ffb_copyarea(struct fb_info *, const struct fb_copyarea *);
 static int ffb_sync(struct fb_info *);
 static int ffb_pan_display(struct fb_var_screeninfo *, struct fb_info *);
 
-static int ffb_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma);
+static int ffb_sbusfb_mmap(struct fb_info *info, struct mm_area *vma);
 static int ffb_sbusfb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg);
 
 /*
@@ -849,7 +849,7 @@ static const struct sbus_mmap_map ffb_mmap_map[] = {
 	{ .size = 0 }
 };
 
-static int ffb_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int ffb_sbusfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct ffb_par *par = (struct ffb_par *)info->par;
 
diff --git a/drivers/video/fbdev/gbefb.c b/drivers/video/fbdev/gbefb.c
index 4c36a3e409be..b3a423fbe0e9 100644
--- a/drivers/video/fbdev/gbefb.c
+++ b/drivers/video/fbdev/gbefb.c
@@ -992,7 +992,7 @@ static int gbefb_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
 }
 
 static int gbefb_mmap(struct fb_info *info,
-			struct vm_area_struct *vma)
+			struct mm_area *vma)
 {
 	unsigned long size = vma->vm_end - vma->vm_start;
 	unsigned long offset = vma->vm_pgoff << PAGE_SHIFT;
diff --git a/drivers/video/fbdev/leo.c b/drivers/video/fbdev/leo.c
index b9fb059df2c7..76d44efee3c1 100644
--- a/drivers/video/fbdev/leo.c
+++ b/drivers/video/fbdev/leo.c
@@ -33,7 +33,7 @@ static int leo_setcolreg(unsigned, unsigned, unsigned, unsigned,
 static int leo_blank(int, struct fb_info *);
 static int leo_pan_display(struct fb_var_screeninfo *, struct fb_info *);
 
-static int leo_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma);
+static int leo_sbusfb_mmap(struct fb_info *info, struct mm_area *vma);
 static int leo_sbusfb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg);
 
 /*
@@ -407,7 +407,7 @@ static const struct sbus_mmap_map leo_mmap_map[] = {
 	{ .size = 0 }
 };
 
-static int leo_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int leo_sbusfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct leo_par *par = (struct leo_par *)info->par;
 
diff --git a/drivers/video/fbdev/omap/omapfb.h b/drivers/video/fbdev/omap/omapfb.h
index ab1cb6e7f5f8..cfd41ba0dac7 100644
--- a/drivers/video/fbdev/omap/omapfb.h
+++ b/drivers/video/fbdev/omap/omapfb.h
@@ -159,7 +159,7 @@ struct lcd_ctrl {
 	int		(*setup_mem)	  (int plane, size_t size,
 					   int mem_type, unsigned long *paddr);
 	int		(*mmap)		  (struct fb_info *info,
-					   struct vm_area_struct *vma);
+					   struct mm_area *vma);
 	int		(*set_scale)	  (int plane,
 					   int orig_width, int orig_height,
 					   int out_width, int out_height);
diff --git a/drivers/video/fbdev/omap/omapfb_main.c b/drivers/video/fbdev/omap/omapfb_main.c
index 2682b20d184a..f6781f51b2cc 100644
--- a/drivers/video/fbdev/omap/omapfb_main.c
+++ b/drivers/video/fbdev/omap/omapfb_main.c
@@ -1197,7 +1197,7 @@ static int omapfb_ioctl(struct fb_info *fbi, unsigned int cmd,
 	return r;
 }
 
-static int omapfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int omapfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct omapfb_plane_struct *plane = info->par;
 	struct omapfb_device *fbdev = plane->fbdev;
diff --git a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
index 211f23648686..081d6ea622bb 100644
--- a/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
+++ b/drivers/video/fbdev/omap2/omapfb/omapfb-main.c
@@ -1063,7 +1063,7 @@ static int omapfb_pan_display(struct fb_var_screeninfo *var,
 	return r;
 }
 
-static void mmap_user_open(struct vm_area_struct *vma)
+static void mmap_user_open(struct mm_area *vma)
 {
 	struct omapfb2_mem_region *rg = vma->vm_private_data;
 
@@ -1072,7 +1072,7 @@ static void mmap_user_open(struct vm_area_struct *vma)
 	omapfb_put_mem_region(rg);
 }
 
-static void mmap_user_close(struct vm_area_struct *vma)
+static void mmap_user_close(struct mm_area *vma)
 {
 	struct omapfb2_mem_region *rg = vma->vm_private_data;
 
@@ -1086,7 +1086,7 @@ static const struct vm_operations_struct mmap_user_ops = {
 	.close = mmap_user_close,
 };
 
-static int omapfb_mmap(struct fb_info *fbi, struct vm_area_struct *vma)
+static int omapfb_mmap(struct fb_info *fbi, struct mm_area *vma)
 {
 	struct omapfb_info *ofbi = FB2OFB(fbi);
 	struct fb_fix_screeninfo *fix = &fbi->fix;
diff --git a/drivers/video/fbdev/p9100.c b/drivers/video/fbdev/p9100.c
index 0bc0f78fe4b9..62fdfe8c682d 100644
--- a/drivers/video/fbdev/p9100.c
+++ b/drivers/video/fbdev/p9100.c
@@ -31,7 +31,7 @@ static int p9100_setcolreg(unsigned, unsigned, unsigned, unsigned,
 			   unsigned, struct fb_info *);
 static int p9100_blank(int, struct fb_info *);
 
-static int p9100_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma);
+static int p9100_sbusfb_mmap(struct fb_info *info, struct mm_area *vma);
 static int p9100_sbusfb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg);
 
 /*
@@ -211,7 +211,7 @@ static const struct sbus_mmap_map p9100_mmap_map[] = {
 	{ 0,			0,		0		    }
 };
 
-static int p9100_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int p9100_sbusfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct p9100_par *par = (struct p9100_par *)info->par;
 
diff --git a/drivers/video/fbdev/ps3fb.c b/drivers/video/fbdev/ps3fb.c
index dbcda307f6a6..55796e1765a7 100644
--- a/drivers/video/fbdev/ps3fb.c
+++ b/drivers/video/fbdev/ps3fb.c
@@ -704,7 +704,7 @@ static int ps3fb_pan_display(struct fb_var_screeninfo *var,
      *  As we have a virtual frame buffer, we need our own mmap function
      */
 
-static int ps3fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int ps3fb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	int r;
 
diff --git a/drivers/video/fbdev/pxa3xx-gcu.c b/drivers/video/fbdev/pxa3xx-gcu.c
index 4a78b387b343..6a4ffc17299c 100644
--- a/drivers/video/fbdev/pxa3xx-gcu.c
+++ b/drivers/video/fbdev/pxa3xx-gcu.c
@@ -469,7 +469,7 @@ pxa3xx_gcu_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
 }
 
 static int
-pxa3xx_gcu_mmap(struct file *file, struct vm_area_struct *vma)
+pxa3xx_gcu_mmap(struct file *file, struct mm_area *vma)
 {
 	unsigned int size = vma->vm_end - vma->vm_start;
 	struct pxa3xx_gcu_priv *priv = to_pxa3xx_gcu_priv(file);
diff --git a/drivers/video/fbdev/sa1100fb.c b/drivers/video/fbdev/sa1100fb.c
index 0d362d2bf0e3..d21ae655cca4 100644
--- a/drivers/video/fbdev/sa1100fb.c
+++ b/drivers/video/fbdev/sa1100fb.c
@@ -556,7 +556,7 @@ static int sa1100fb_blank(int blank, struct fb_info *info)
 }
 
 static int sa1100fb_mmap(struct fb_info *info,
-			 struct vm_area_struct *vma)
+			 struct mm_area *vma)
 {
 	struct sa1100fb_info *fbi =
 		container_of(info, struct sa1100fb_info, fb);
diff --git a/drivers/video/fbdev/sbuslib.c b/drivers/video/fbdev/sbuslib.c
index 4c79654bda30..8fced2f56b38 100644
--- a/drivers/video/fbdev/sbuslib.c
+++ b/drivers/video/fbdev/sbuslib.c
@@ -42,7 +42,7 @@ int sbusfb_mmap_helper(const struct sbus_mmap_map *map,
 		       unsigned long physbase,
 		       unsigned long fbsize,
 		       unsigned long iospace,
-		       struct vm_area_struct *vma)
+		       struct mm_area *vma)
 {
 	unsigned int size, page, r, map_size;
 	unsigned long map_offset = 0;
diff --git a/drivers/video/fbdev/sbuslib.h b/drivers/video/fbdev/sbuslib.h
index e9af2dc93f94..75e60f30957f 100644
--- a/drivers/video/fbdev/sbuslib.h
+++ b/drivers/video/fbdev/sbuslib.h
@@ -6,7 +6,7 @@
 struct device_node;
 struct fb_info;
 struct fb_var_screeninfo;
-struct vm_area_struct;
+struct mm_area;
 
 struct sbus_mmap_map {
 	unsigned long voff;
@@ -22,7 +22,7 @@ extern void sbusfb_fill_var(struct fb_var_screeninfo *var,
 extern int sbusfb_mmap_helper(const struct sbus_mmap_map *map,
 			      unsigned long physbase, unsigned long fbsize,
 			      unsigned long iospace,
-			      struct vm_area_struct *vma);
+			      struct mm_area *vma);
 int sbusfb_ioctl_helper(unsigned long cmd, unsigned long arg,
 			struct fb_info *info,
 			int type, int fb_depth, unsigned long fb_size);
diff --git a/drivers/video/fbdev/sh_mobile_lcdcfb.c b/drivers/video/fbdev/sh_mobile_lcdcfb.c
index dd950e4ab5ce..4b53eabd93fb 100644
--- a/drivers/video/fbdev/sh_mobile_lcdcfb.c
+++ b/drivers/video/fbdev/sh_mobile_lcdcfb.c
@@ -1478,7 +1478,7 @@ static int sh_mobile_lcdc_overlay_blank(int blank, struct fb_info *info)
 }
 
 static int
-sh_mobile_lcdc_overlay_mmap(struct fb_info *info, struct vm_area_struct *vma)
+sh_mobile_lcdc_overlay_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct sh_mobile_lcdc_overlay *ovl = info->par;
 
@@ -1947,7 +1947,7 @@ static int sh_mobile_lcdc_blank(int blank, struct fb_info *info)
 }
 
 static int
-sh_mobile_lcdc_mmap(struct fb_info *info, struct vm_area_struct *vma)
+sh_mobile_lcdc_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct sh_mobile_lcdc_chan *ch = info->par;
 
diff --git a/drivers/video/fbdev/smscufx.c b/drivers/video/fbdev/smscufx.c
index 5f0dd01fd834..0cf731d1c04c 100644
--- a/drivers/video/fbdev/smscufx.c
+++ b/drivers/video/fbdev/smscufx.c
@@ -773,7 +773,7 @@ static int ufx_set_vid_mode(struct ufx_data *dev, struct fb_var_screeninfo *var)
 	return 0;
 }
 
-static int ufx_ops_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int ufx_ops_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	unsigned long start = vma->vm_start;
 	unsigned long size = vma->vm_end - vma->vm_start;
diff --git a/drivers/video/fbdev/tcx.c b/drivers/video/fbdev/tcx.c
index f9a0085ad72b..fef8f2c55b15 100644
--- a/drivers/video/fbdev/tcx.c
+++ b/drivers/video/fbdev/tcx.c
@@ -34,7 +34,7 @@ static int tcx_setcolreg(unsigned, unsigned, unsigned, unsigned,
 static int tcx_blank(int, struct fb_info *);
 static int tcx_pan_display(struct fb_var_screeninfo *, struct fb_info *);
 
-static int tcx_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma);
+static int tcx_sbusfb_mmap(struct fb_info *info, struct mm_area *vma);
 static int tcx_sbusfb_ioctl(struct fb_info *info, unsigned int cmd, unsigned long arg);
 
 /*
@@ -292,7 +292,7 @@ static const struct sbus_mmap_map __tcx_mmap_map[TCX_MMAP_ENTRIES] = {
 	{ .size = 0 }
 };
 
-static int tcx_sbusfb_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int tcx_sbusfb_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	struct tcx_par *par = (struct tcx_par *)info->par;
 
diff --git a/drivers/video/fbdev/udlfb.c b/drivers/video/fbdev/udlfb.c
index acadf0eb450c..bcffed2bac09 100644
--- a/drivers/video/fbdev/udlfb.c
+++ b/drivers/video/fbdev/udlfb.c
@@ -321,7 +321,7 @@ static int dlfb_set_video_mode(struct dlfb_data *dlfb,
 	return retval;
 }
 
-static int dlfb_ops_mmap(struct fb_info *info, struct vm_area_struct *vma)
+static int dlfb_ops_mmap(struct fb_info *info, struct mm_area *vma)
 {
 	unsigned long start = vma->vm_start;
 	unsigned long size = vma->vm_end - vma->vm_start;
diff --git a/drivers/video/fbdev/vfb.c b/drivers/video/fbdev/vfb.c
index 5b7965f36c5e..5836aa107f86 100644
--- a/drivers/video/fbdev/vfb.c
+++ b/drivers/video/fbdev/vfb.c
@@ -76,7 +76,7 @@ static int vfb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
 static int vfb_pan_display(struct fb_var_screeninfo *var,
 			   struct fb_info *info);
 static int vfb_mmap(struct fb_info *info,
-		    struct vm_area_struct *vma);
+		    struct mm_area *vma);
 
 static const struct fb_ops vfb_ops = {
 	.owner		= THIS_MODULE,
@@ -380,7 +380,7 @@ static int vfb_pan_display(struct fb_var_screeninfo *var,
      */
 
 static int vfb_mmap(struct fb_info *info,
-		    struct vm_area_struct *vma)
+		    struct mm_area *vma)
 {
 	vma->vm_page_prot = pgprot_decrypted(vma->vm_page_prot);
 
diff --git a/drivers/virt/acrn/mm.c b/drivers/virt/acrn/mm.c
index 4c2f28715b70..eeec17237749 100644
--- a/drivers/virt/acrn/mm.c
+++ b/drivers/virt/acrn/mm.c
@@ -163,7 +163,7 @@ int acrn_vm_ram_map(struct acrn_vm *vm, struct acrn_vm_memmap *memmap)
 	void *remap_vaddr;
 	int ret, pinned;
 	u64 user_vm_pa;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	if (!vm || !memmap)
 		return -EINVAL;
diff --git a/drivers/xen/gntalloc.c b/drivers/xen/gntalloc.c
index f93f73ecefee..62dab536c2f6 100644
--- a/drivers/xen/gntalloc.c
+++ b/drivers/xen/gntalloc.c
@@ -445,7 +445,7 @@ static long gntalloc_ioctl(struct file *filp, unsigned int cmd,
 	return 0;
 }
 
-static void gntalloc_vma_open(struct vm_area_struct *vma)
+static void gntalloc_vma_open(struct mm_area *vma)
 {
 	struct gntalloc_vma_private_data *priv = vma->vm_private_data;
 
@@ -457,7 +457,7 @@ static void gntalloc_vma_open(struct vm_area_struct *vma)
 	mutex_unlock(&gref_mutex);
 }
 
-static void gntalloc_vma_close(struct vm_area_struct *vma)
+static void gntalloc_vma_close(struct mm_area *vma)
 {
 	struct gntalloc_vma_private_data *priv = vma->vm_private_data;
 	struct gntalloc_gref *gref, *next;
@@ -488,7 +488,7 @@ static const struct vm_operations_struct gntalloc_vmops = {
 	.close = gntalloc_vma_close,
 };
 
-static int gntalloc_mmap(struct file *filp, struct vm_area_struct *vma)
+static int gntalloc_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct gntalloc_file_private_data *priv = filp->private_data;
 	struct gntalloc_vma_private_data *vm_priv;
diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c
index 61faea1f0663..879c601543b8 100644
--- a/drivers/xen/gntdev.c
+++ b/drivers/xen/gntdev.c
@@ -496,7 +496,7 @@ static void unmap_grant_pages(struct gntdev_grant_map *map, int offset,
 
 /* ------------------------------------------------------------------ */
 
-static void gntdev_vma_open(struct vm_area_struct *vma)
+static void gntdev_vma_open(struct mm_area *vma)
 {
 	struct gntdev_grant_map *map = vma->vm_private_data;
 
@@ -504,7 +504,7 @@ static void gntdev_vma_open(struct vm_area_struct *vma)
 	refcount_inc(&map->users);
 }
 
-static void gntdev_vma_close(struct vm_area_struct *vma)
+static void gntdev_vma_close(struct mm_area *vma)
 {
 	struct gntdev_grant_map *map = vma->vm_private_data;
 	struct file *file = vma->vm_file;
@@ -516,7 +516,7 @@ static void gntdev_vma_close(struct vm_area_struct *vma)
 	gntdev_put_map(priv, map);
 }
 
-static struct page *gntdev_vma_find_special_page(struct vm_area_struct *vma,
+static struct page *gntdev_vma_find_special_page(struct mm_area *vma,
 						 unsigned long addr)
 {
 	struct gntdev_grant_map *map = vma->vm_private_data;
@@ -690,7 +690,7 @@ static long gntdev_ioctl_get_offset_for_vaddr(struct gntdev_priv *priv,
 					      struct ioctl_gntdev_get_offset_for_vaddr __user *u)
 {
 	struct ioctl_gntdev_get_offset_for_vaddr op;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct gntdev_grant_map *map;
 	int rv = -EINVAL;
 
@@ -1030,7 +1030,7 @@ static long gntdev_ioctl(struct file *flip,
 	return 0;
 }
 
-static int gntdev_mmap(struct file *flip, struct vm_area_struct *vma)
+static int gntdev_mmap(struct file *flip, struct mm_area *vma)
 {
 	struct gntdev_priv *priv = flip->private_data;
 	int index = vma->vm_pgoff;
diff --git a/drivers/xen/privcmd-buf.c b/drivers/xen/privcmd-buf.c
index 0f0dad427d7e..b0d391ea06a5 100644
--- a/drivers/xen/privcmd-buf.c
+++ b/drivers/xen/privcmd-buf.c
@@ -84,7 +84,7 @@ static int privcmd_buf_release(struct inode *ino, struct file *file)
 	return 0;
 }
 
-static void privcmd_buf_vma_open(struct vm_area_struct *vma)
+static void privcmd_buf_vma_open(struct mm_area *vma)
 {
 	struct privcmd_buf_vma_private *vma_priv = vma->vm_private_data;
 
@@ -96,7 +96,7 @@ static void privcmd_buf_vma_open(struct vm_area_struct *vma)
 	mutex_unlock(&vma_priv->file_priv->lock);
 }
 
-static void privcmd_buf_vma_close(struct vm_area_struct *vma)
+static void privcmd_buf_vma_close(struct mm_area *vma)
 {
 	struct privcmd_buf_vma_private *vma_priv = vma->vm_private_data;
 	struct privcmd_buf_private *file_priv;
@@ -130,7 +130,7 @@ static const struct vm_operations_struct privcmd_buf_vm_ops = {
 	.fault = privcmd_buf_vma_fault,
 };
 
-static int privcmd_buf_mmap(struct file *file, struct vm_area_struct *vma)
+static int privcmd_buf_mmap(struct file *file, struct mm_area *vma)
 {
 	struct privcmd_buf_private *file_priv = file->private_data;
 	struct privcmd_buf_vma_private *vma_priv;
diff --git a/drivers/xen/privcmd.c b/drivers/xen/privcmd.c
index 13a10f3294a8..6e064d04bab4 100644
--- a/drivers/xen/privcmd.c
+++ b/drivers/xen/privcmd.c
@@ -73,7 +73,7 @@ struct privcmd_data {
 };
 
 static int privcmd_vma_range_is_mapped(
-               struct vm_area_struct *vma,
+               struct mm_area *vma,
                unsigned long addr,
                unsigned long nr_pages);
 
@@ -226,7 +226,7 @@ static int traverse_pages_block(unsigned nelem, size_t size,
 
 struct mmap_gfn_state {
 	unsigned long va;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	domid_t domain;
 };
 
@@ -234,7 +234,7 @@ static int mmap_gfn_range(void *data, void *state)
 {
 	struct privcmd_mmap_entry *msg = data;
 	struct mmap_gfn_state *st = state;
-	struct vm_area_struct *vma = st->vma;
+	struct mm_area *vma = st->vma;
 	int rc;
 
 	/* Do not allow range to wrap the address space. */
@@ -265,7 +265,7 @@ static long privcmd_ioctl_mmap(struct file *file, void __user *udata)
 	struct privcmd_data *data = file->private_data;
 	struct privcmd_mmap mmapcmd;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int rc;
 	LIST_HEAD(pagelist);
 	struct mmap_gfn_state state;
@@ -324,7 +324,7 @@ static long privcmd_ioctl_mmap(struct file *file, void __user *udata)
 struct mmap_batch_state {
 	domid_t domain;
 	unsigned long va;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int index;
 	/* A tristate:
 	 *      0 for no errors
@@ -348,7 +348,7 @@ static int mmap_batch_fn(void *data, int nr, void *state)
 {
 	xen_pfn_t *gfnp = data;
 	struct mmap_batch_state *st = state;
-	struct vm_area_struct *vma = st->vma;
+	struct mm_area *vma = st->vma;
 	struct page **pages = vma->vm_private_data;
 	struct page **cur_pages = NULL;
 	int ret;
@@ -428,7 +428,7 @@ static int mmap_return_errors(void *data, int nr, void *state)
  * the vma with the page info to use later.
  * Returns: 0 if success, otherwise -errno
  */
-static int alloc_empty_pages(struct vm_area_struct *vma, int numpgs)
+static int alloc_empty_pages(struct mm_area *vma, int numpgs)
 {
 	int rc;
 	struct page **pages;
@@ -459,7 +459,7 @@ static long privcmd_ioctl_mmap_batch(
 	int ret;
 	struct privcmd_mmapbatch_v2 m;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long nr_pages;
 	LIST_HEAD(pagelist);
 	struct mmap_batch_state state;
@@ -736,7 +736,7 @@ static long privcmd_ioctl_mmap_resource(struct file *file,
 {
 	struct privcmd_data *data = file->private_data;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct privcmd_mmap_resource kdata;
 	xen_pfn_t *pfns = NULL;
 	struct xen_mem_acquire_resource xdata = { };
@@ -1222,7 +1222,7 @@ struct privcmd_kernel_ioreq *alloc_ioreq(struct privcmd_ioeventfd *ioeventfd)
 {
 	struct privcmd_kernel_ioreq *kioreq;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct page **pages;
 	unsigned int *ports;
 	int ret, size, i;
@@ -1584,7 +1584,7 @@ static int privcmd_release(struct inode *ino, struct file *file)
 	return 0;
 }
 
-static void privcmd_close(struct vm_area_struct *vma)
+static void privcmd_close(struct mm_area *vma)
 {
 	struct page **pages = vma->vm_private_data;
 	int numpgs = vma_pages(vma);
@@ -1617,7 +1617,7 @@ static const struct vm_operations_struct privcmd_vm_ops = {
 	.fault = privcmd_fault
 };
 
-static int privcmd_mmap(struct file *file, struct vm_area_struct *vma)
+static int privcmd_mmap(struct file *file, struct mm_area *vma)
 {
 	/* DONTCOPY is essential for Xen because copy_page_range doesn't know
 	 * how to recreate these mappings */
@@ -1640,7 +1640,7 @@ static int is_mapped_fn(pte_t *pte, unsigned long addr, void *data)
 }
 
 static int privcmd_vma_range_is_mapped(
-	           struct vm_area_struct *vma,
+	           struct mm_area *vma,
 	           unsigned long addr,
 	           unsigned long nr_pages)
 {
diff --git a/drivers/xen/xenbus/xenbus_dev_backend.c b/drivers/xen/xenbus/xenbus_dev_backend.c
index edba5fecde4d..356bc765f133 100644
--- a/drivers/xen/xenbus/xenbus_dev_backend.c
+++ b/drivers/xen/xenbus/xenbus_dev_backend.c
@@ -89,7 +89,7 @@ static long xenbus_backend_ioctl(struct file *file, unsigned int cmd,
 	}
 }
 
-static int xenbus_backend_mmap(struct file *file, struct vm_area_struct *vma)
+static int xenbus_backend_mmap(struct file *file, struct mm_area *vma)
 {
 	size_t size = vma->vm_end - vma->vm_start;
 
diff --git a/drivers/xen/xenfs/xenstored.c b/drivers/xen/xenfs/xenstored.c
index f59235f9f8a2..a4685a4f5bef 100644
--- a/drivers/xen/xenfs/xenstored.c
+++ b/drivers/xen/xenfs/xenstored.c
@@ -31,7 +31,7 @@ static int xsd_kva_open(struct inode *inode, struct file *file)
 	return 0;
 }
 
-static int xsd_kva_mmap(struct file *file, struct vm_area_struct *vma)
+static int xsd_kva_mmap(struct file *file, struct mm_area *vma)
 {
 	size_t size = vma->vm_end - vma->vm_start;
 
diff --git a/drivers/xen/xlate_mmu.c b/drivers/xen/xlate_mmu.c
index f17c4c03db30..a70ef3f8f617 100644
--- a/drivers/xen/xlate_mmu.c
+++ b/drivers/xen/xlate_mmu.c
@@ -66,7 +66,7 @@ struct remap_data {
 	int nr_fgfn; /* Number of foreign gfn left to map */
 	pgprot_t prot;
 	domid_t  domid;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int index;
 	struct page **pages;
 	struct xen_remap_gfn_info *info;
@@ -140,7 +140,7 @@ static int remap_pte_fn(pte_t *ptep, unsigned long addr, void *data)
 	return 0;
 }
 
-int xen_xlate_remap_gfn_array(struct vm_area_struct *vma,
+int xen_xlate_remap_gfn_array(struct mm_area *vma,
 			      unsigned long addr,
 			      xen_pfn_t *gfn, int nr,
 			      int *err_ptr, pgprot_t prot,
@@ -180,7 +180,7 @@ static void unmap_gfn(unsigned long gfn, void *data)
 	(void)HYPERVISOR_memory_op(XENMEM_remove_from_physmap, &xrp);
 }
 
-int xen_xlate_unmap_gfn_range(struct vm_area_struct *vma,
+int xen_xlate_unmap_gfn_range(struct mm_area *vma,
 			      int nr, struct page **pages)
 {
 	xen_for_each_gfn(pages, nr, unmap_gfn, NULL);
@@ -282,7 +282,7 @@ static int remap_pfn_fn(pte_t *ptep, unsigned long addr, void *data)
 }
 
 /* Used by the privcmd module, but has to be built-in on ARM */
-int xen_remap_vma_range(struct vm_area_struct *vma, unsigned long addr, unsigned long len)
+int xen_remap_vma_range(struct mm_area *vma, unsigned long addr, unsigned long len)
 {
 	struct remap_pfn r = {
 		.mm = vma->vm_mm,
diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c
index 348cc90bf9c5..b2a7d581805b 100644
--- a/fs/9p/vfs_file.c
+++ b/fs/9p/vfs_file.c
@@ -454,7 +454,7 @@ int v9fs_file_fsync_dotl(struct file *filp, loff_t start, loff_t end,
 }
 
 static int
-v9fs_file_mmap(struct file *filp, struct vm_area_struct *vma)
+v9fs_file_mmap(struct file *filp, struct mm_area *vma)
 {
 	int retval;
 	struct inode *inode = file_inode(filp);
@@ -480,7 +480,7 @@ v9fs_vm_page_mkwrite(struct vm_fault *vmf)
 	return netfs_page_mkwrite(vmf, NULL);
 }
 
-static void v9fs_mmap_vm_close(struct vm_area_struct *vma)
+static void v9fs_mmap_vm_close(struct mm_area *vma)
 {
 	struct inode *inode;
 
diff --git a/fs/afs/file.c b/fs/afs/file.c
index fc15497608c6..1794c1138669 100644
--- a/fs/afs/file.c
+++ b/fs/afs/file.c
@@ -19,14 +19,14 @@
 #include <trace/events/netfs.h>
 #include "internal.h"
 
-static int afs_file_mmap(struct file *file, struct vm_area_struct *vma);
+static int afs_file_mmap(struct file *file, struct mm_area *vma);
 
 static ssize_t afs_file_read_iter(struct kiocb *iocb, struct iov_iter *iter);
 static ssize_t afs_file_splice_read(struct file *in, loff_t *ppos,
 				    struct pipe_inode_info *pipe,
 				    size_t len, unsigned int flags);
-static void afs_vm_open(struct vm_area_struct *area);
-static void afs_vm_close(struct vm_area_struct *area);
+static void afs_vm_open(struct mm_area *area);
+static void afs_vm_close(struct mm_area *area);
 static vm_fault_t afs_vm_map_pages(struct vm_fault *vmf, pgoff_t start_pgoff, pgoff_t end_pgoff);
 
 const struct file_operations afs_file_operations = {
@@ -492,7 +492,7 @@ static void afs_drop_open_mmap(struct afs_vnode *vnode)
 /*
  * Handle setting up a memory mapping on an AFS file.
  */
-static int afs_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int afs_file_mmap(struct file *file, struct mm_area *vma)
 {
 	struct afs_vnode *vnode = AFS_FS_I(file_inode(file));
 	int ret;
@@ -507,12 +507,12 @@ static int afs_file_mmap(struct file *file, struct vm_area_struct *vma)
 	return ret;
 }
 
-static void afs_vm_open(struct vm_area_struct *vma)
+static void afs_vm_open(struct mm_area *vma)
 {
 	afs_add_open_mmap(AFS_FS_I(file_inode(vma->vm_file)));
 }
 
-static void afs_vm_close(struct vm_area_struct *vma)
+static void afs_vm_close(struct mm_area *vma)
 {
 	afs_drop_open_mmap(AFS_FS_I(file_inode(vma->vm_file)));
 }
diff --git a/fs/aio.c b/fs/aio.c
index 7b976b564cfc..140b42dd11ad 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -351,7 +351,7 @@ static void aio_free_ring(struct kioctx *ctx)
 	}
 }
 
-static int aio_ring_mremap(struct vm_area_struct *vma)
+static int aio_ring_mremap(struct mm_area *vma)
 {
 	struct file *file = vma->vm_file;
 	struct mm_struct *mm = vma->vm_mm;
@@ -392,7 +392,7 @@ static const struct vm_operations_struct aio_ring_vm_ops = {
 #endif
 };
 
-static int aio_ring_mmap(struct file *file, struct vm_area_struct *vma)
+static int aio_ring_mmap(struct file *file, struct mm_area *vma)
 {
 	vm_flags_set(vma, VM_DONTEXPAND);
 	vma->vm_ops = &aio_ring_vm_ops;
diff --git a/fs/backing-file.c b/fs/backing-file.c
index 763fbe9b72b2..95e6cea5fa7a 100644
--- a/fs/backing-file.c
+++ b/fs/backing-file.c
@@ -323,7 +323,7 @@ ssize_t backing_file_splice_write(struct pipe_inode_info *pipe,
 }
 EXPORT_SYMBOL_GPL(backing_file_splice_write);
 
-int backing_file_mmap(struct file *file, struct vm_area_struct *vma,
+int backing_file_mmap(struct file *file, struct mm_area *vma,
 		      struct backing_file_ctx *ctx)
 {
 	const struct cred *old_cred;
diff --git a/fs/bcachefs/fs.c b/fs/bcachefs/fs.c
index fc834bdf1f52..0cd13a91456c 100644
--- a/fs/bcachefs/fs.c
+++ b/fs/bcachefs/fs.c
@@ -1403,7 +1403,7 @@ static const struct vm_operations_struct bch_vm_ops = {
 	.page_mkwrite   = bch2_page_mkwrite,
 };
 
-static int bch2_mmap(struct file *file, struct vm_area_struct *vma)
+static int bch2_mmap(struct file *file, struct mm_area *vma)
 {
 	file_accessed(file);
 
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 584fa89bc877..b28c8bc74b45 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -173,7 +173,7 @@ create_elf_tables(struct linux_binprm *bprm, const struct elfhdr *exec,
 	elf_addr_t flags = 0;
 	int ei_index;
 	const struct cred *cred = current_cred();
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	/*
 	 * In some cases (e.g. Hyper-Threading), we want to avoid L1
diff --git a/fs/btrfs/file.c b/fs/btrfs/file.c
index 262a707d8990..99026a1bf443 100644
--- a/fs/btrfs/file.c
+++ b/fs/btrfs/file.c
@@ -1928,7 +1928,7 @@ static const struct vm_operations_struct btrfs_file_vm_ops = {
 	.page_mkwrite	= btrfs_page_mkwrite,
 };
 
-static int btrfs_file_mmap(struct file	*filp, struct vm_area_struct *vma)
+static int btrfs_file_mmap(struct file	*filp, struct mm_area *vma)
 {
 	struct address_space *mapping = filp->f_mapping;
 
diff --git a/fs/buffer.c b/fs/buffer.c
index c7abb4a029dc..aafb15b65afa 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -2585,7 +2585,7 @@ EXPORT_SYMBOL(cont_write_begin);
  * Direct callers of this function should protect against filesystem freezing
  * using sb_start_pagefault() - sb_end_pagefault() functions.
  */
-int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf,
+int block_page_mkwrite(struct mm_area *vma, struct vm_fault *vmf,
 			 get_block_t get_block)
 {
 	struct folio *folio = page_folio(vmf->page);
diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c
index 29be367905a1..b6a99e66b1af 100644
--- a/fs/ceph/addr.c
+++ b/fs/ceph/addr.c
@@ -1940,7 +1940,7 @@ static void ceph_restore_sigs(sigset_t *oldset)
  */
 static vm_fault_t ceph_filemap_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct inode *inode = file_inode(vma->vm_file);
 	struct ceph_inode_info *ci = ceph_inode(inode);
 	struct ceph_client *cl = ceph_inode_to_client(inode);
@@ -2031,7 +2031,7 @@ static vm_fault_t ceph_filemap_fault(struct vm_fault *vmf)
 
 static vm_fault_t ceph_page_mkwrite(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct inode *inode = file_inode(vma->vm_file);
 	struct ceph_client *cl = ceph_inode_to_client(inode);
 	struct ceph_inode_info *ci = ceph_inode(inode);
@@ -2319,7 +2319,7 @@ static const struct vm_operations_struct ceph_vmops = {
 	.page_mkwrite	= ceph_page_mkwrite,
 };
 
-int ceph_mmap(struct file *file, struct vm_area_struct *vma)
+int ceph_mmap(struct file *file, struct mm_area *vma)
 {
 	struct address_space *mapping = file->f_mapping;
 
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index bb0db0cc8003..bdb01ebd811b 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -1286,7 +1286,7 @@ extern void __ceph_touch_fmode(struct ceph_inode_info *ci,
 /* addr.c */
 extern const struct address_space_operations ceph_aops;
 extern const struct netfs_request_ops ceph_netfs_ops;
-extern int ceph_mmap(struct file *file, struct vm_area_struct *vma);
+extern int ceph_mmap(struct file *file, struct mm_area *vma);
 extern int ceph_uninline_data(struct file *file);
 extern int ceph_pool_perm_check(struct inode *inode, int need);
 extern void ceph_pool_perm_destroy(struct ceph_mds_client* mdsc);
diff --git a/fs/coda/file.c b/fs/coda/file.c
index 148856a582a9..28d6240819a0 100644
--- a/fs/coda/file.c
+++ b/fs/coda/file.c
@@ -120,7 +120,7 @@ coda_file_splice_read(struct file *coda_file, loff_t *ppos,
 }
 
 static void
-coda_vm_open(struct vm_area_struct *vma)
+coda_vm_open(struct mm_area *vma)
 {
 	struct coda_vm_ops *cvm_ops =
 		container_of(vma->vm_ops, struct coda_vm_ops, vm_ops);
@@ -132,7 +132,7 @@ coda_vm_open(struct vm_area_struct *vma)
 }
 
 static void
-coda_vm_close(struct vm_area_struct *vma)
+coda_vm_close(struct mm_area *vma)
 {
 	struct coda_vm_ops *cvm_ops =
 		container_of(vma->vm_ops, struct coda_vm_ops, vm_ops);
@@ -148,7 +148,7 @@ coda_vm_close(struct vm_area_struct *vma)
 }
 
 static int
-coda_file_mmap(struct file *coda_file, struct vm_area_struct *vma)
+coda_file_mmap(struct file *coda_file, struct mm_area *vma)
 {
 	struct inode *coda_inode = file_inode(coda_file);
 	struct coda_file_info *cfi = coda_ftoc(coda_file);
diff --git a/fs/coredump.c b/fs/coredump.c
index c33c177a701b..f9987d48c5a6 100644
--- a/fs/coredump.c
+++ b/fs/coredump.c
@@ -1082,7 +1082,7 @@ fs_initcall(init_fs_coredump_sysctls);
  * meant. These special mappings include - vDSO, vsyscall, and other
  * architecture specific mappings
  */
-static bool always_dump_vma(struct vm_area_struct *vma)
+static bool always_dump_vma(struct mm_area *vma)
 {
 	/* Any vsyscall mappings? */
 	if (vma == get_gate_vma(vma->vm_mm))
@@ -1110,7 +1110,7 @@ static bool always_dump_vma(struct vm_area_struct *vma)
 /*
  * Decide how much of @vma's contents should be included in a core dump.
  */
-static unsigned long vma_dump_size(struct vm_area_struct *vma,
+static unsigned long vma_dump_size(struct mm_area *vma,
 				   unsigned long mm_flags)
 {
 #define FILTER(type)	(mm_flags & (1UL << MMF_DUMP_##type))
@@ -1193,9 +1193,9 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,
  * Helper function for iterating across a vma list.  It ensures that the caller
  * will visit `gate_vma' prior to terminating the search.
  */
-static struct vm_area_struct *coredump_next_vma(struct vma_iterator *vmi,
-				       struct vm_area_struct *vma,
-				       struct vm_area_struct *gate_vma)
+static struct mm_area *coredump_next_vma(struct vma_iterator *vmi,
+				       struct mm_area *vma,
+				       struct mm_area *gate_vma)
 {
 	if (gate_vma && (vma == gate_vma))
 		return NULL;
@@ -1238,7 +1238,7 @@ static int cmp_vma_size(const void *vma_meta_lhs_ptr, const void *vma_meta_rhs_p
  */
 static bool dump_vma_snapshot(struct coredump_params *cprm)
 {
-	struct vm_area_struct *gate_vma, *vma = NULL;
+	struct mm_area *gate_vma, *vma = NULL;
 	struct mm_struct *mm = current->mm;
 	VMA_ITERATOR(vmi, mm, 0);
 	int i = 0;
diff --git a/fs/cramfs/inode.c b/fs/cramfs/inode.c
index b84d1747a020..9147633db9eb 100644
--- a/fs/cramfs/inode.c
+++ b/fs/cramfs/inode.c
@@ -343,7 +343,7 @@ static bool cramfs_last_page_is_shared(struct inode *inode)
 	return memchr_inv(tail_data, 0, PAGE_SIZE - partial) ? true : false;
 }
 
-static int cramfs_physmem_mmap(struct file *file, struct vm_area_struct *vma)
+static int cramfs_physmem_mmap(struct file *file, struct mm_area *vma)
 {
 	struct inode *inode = file_inode(file);
 	struct cramfs_sb_info *sbi = CRAMFS_SB(inode->i_sb);
@@ -435,7 +435,7 @@ static int cramfs_physmem_mmap(struct file *file, struct vm_area_struct *vma)
 
 #else /* CONFIG_MMU */
 
-static int cramfs_physmem_mmap(struct file *file, struct vm_area_struct *vma)
+static int cramfs_physmem_mmap(struct file *file, struct mm_area *vma)
 {
 	return is_nommu_shared_mapping(vma->vm_flags) ? 0 : -ENOSYS;
 }
diff --git a/fs/dax.c b/fs/dax.c
index af5045b0f476..a9c552127d9f 100644
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -439,7 +439,7 @@ static void dax_folio_init(void *entry)
 }
 
 static void dax_associate_entry(void *entry, struct address_space *mapping,
-				struct vm_area_struct *vma,
+				struct mm_area *vma,
 				unsigned long address, bool shared)
 {
 	unsigned long size = dax_entry_size(entry), index;
@@ -1038,7 +1038,7 @@ static int copy_cow_page_dax(struct vm_fault *vmf, const struct iomap_iter *iter
  * flushed on write-faults (non-cow), but not read-faults.
  */
 static bool dax_fault_is_synchronous(const struct iomap_iter *iter,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	return (iter->flags & IOMAP_WRITE) && (vma->vm_flags & VM_SYNC) &&
 		(iter->iomap.flags & IOMAP_F_DIRTY);
@@ -1114,7 +1114,7 @@ static int dax_writeback_one(struct xa_state *xas, struct dax_device *dax_dev,
 {
 	unsigned long pfn, index, count, end;
 	long ret = 0;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	/*
 	 * A page got tagged dirty in DAX mapping? Something is seriously
@@ -1388,7 +1388,7 @@ static vm_fault_t dax_pmd_load_hole(struct xa_state *xas, struct vm_fault *vmf,
 {
 	struct address_space *mapping = vmf->vma->vm_file->f_mapping;
 	unsigned long pmd_addr = vmf->address & PMD_MASK;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct inode *inode = mapping->host;
 	pgtable_t pgtable = NULL;
 	struct folio *zero_folio;
diff --git a/fs/ecryptfs/file.c b/fs/ecryptfs/file.c
index ce0a3c5ed0ca..ed71003a5b20 100644
--- a/fs/ecryptfs/file.c
+++ b/fs/ecryptfs/file.c
@@ -185,7 +185,7 @@ static int read_or_initialize_metadata(struct dentry *dentry)
 	return rc;
 }
 
-static int ecryptfs_mmap(struct file *file, struct vm_area_struct *vma)
+static int ecryptfs_mmap(struct file *file, struct mm_area *vma)
 {
 	struct file *lower_file = ecryptfs_file_to_lower(file);
 	/*
diff --git a/fs/erofs/data.c b/fs/erofs/data.c
index 2409d2ab0c28..05444e3d9326 100644
--- a/fs/erofs/data.c
+++ b/fs/erofs/data.c
@@ -408,7 +408,7 @@ static const struct vm_operations_struct erofs_dax_vm_ops = {
 	.huge_fault	= erofs_dax_huge_fault,
 };
 
-static int erofs_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int erofs_file_mmap(struct file *file, struct mm_area *vma)
 {
 	if (!IS_DAX(file_inode(file)))
 		return generic_file_readonly_mmap(file, vma);
diff --git a/fs/exec.c b/fs/exec.c
index f511409b8cd5..c6c2cddb8cc7 100644
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -198,7 +198,7 @@ static struct page *get_arg_page(struct linux_binprm *bprm, unsigned long pos,
 		int write)
 {
 	struct page *page;
-	struct vm_area_struct *vma = bprm->vma;
+	struct mm_area *vma = bprm->vma;
 	struct mm_struct *mm = bprm->mm;
 	int ret;
 
@@ -245,7 +245,7 @@ static void flush_arg_page(struct linux_binprm *bprm, unsigned long pos,
 static int __bprm_mm_init(struct linux_binprm *bprm)
 {
 	int err;
-	struct vm_area_struct *vma = NULL;
+	struct mm_area *vma = NULL;
 	struct mm_struct *mm = bprm->mm;
 
 	bprm->vma = vma = vm_area_alloc(mm);
@@ -363,7 +363,7 @@ static bool valid_arg_len(struct linux_binprm *bprm, long len)
 
 /*
  * Create a new mm_struct and populate it with a temporary stack
- * vm_area_struct.  We don't have enough context at this point to set the stack
+ * mm_area.  We don't have enough context at this point to set the stack
  * flags, permissions, and offset, so we use temporary values.  We'll update
  * them later in setup_arg_pages().
  */
@@ -702,7 +702,7 @@ static int copy_strings_kernel(int argc, const char *const *argv,
 #ifdef CONFIG_MMU
 
 /*
- * Finalizes the stack vm_area_struct. The flags and permissions are updated,
+ * Finalizes the stack mm_area. The flags and permissions are updated,
  * the stack is optionally relocated, and some extra space is added.
  */
 int setup_arg_pages(struct linux_binprm *bprm,
@@ -712,8 +712,8 @@ int setup_arg_pages(struct linux_binprm *bprm,
 	unsigned long ret;
 	unsigned long stack_shift;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma = bprm->vma;
-	struct vm_area_struct *prev = NULL;
+	struct mm_area *vma = bprm->vma;
+	struct mm_area *prev = NULL;
 	unsigned long vm_flags;
 	unsigned long stack_base;
 	unsigned long stack_size;
diff --git a/fs/exfat/file.c b/fs/exfat/file.c
index 841a5b18e3df..ae38e3545f0e 100644
--- a/fs/exfat/file.c
+++ b/fs/exfat/file.c
@@ -651,7 +651,7 @@ static ssize_t exfat_file_read_iter(struct kiocb *iocb, struct iov_iter *iter)
 static vm_fault_t exfat_page_mkwrite(struct vm_fault *vmf)
 {
 	int err;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct file *file = vma->vm_file;
 	struct inode *inode = file_inode(file);
 	struct exfat_inode_info *ei = EXFAT_I(inode);
@@ -683,7 +683,7 @@ static const struct vm_operations_struct exfat_file_vm_ops = {
 	.page_mkwrite	= exfat_page_mkwrite,
 };
 
-static int exfat_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int exfat_file_mmap(struct file *file, struct mm_area *vma)
 {
 	if (unlikely(exfat_forced_shutdown(file_inode(file)->i_sb)))
 		return -EIO;
diff --git a/fs/ext2/file.c b/fs/ext2/file.c
index 10b061ac5bc0..cfa6459d23f8 100644
--- a/fs/ext2/file.c
+++ b/fs/ext2/file.c
@@ -122,7 +122,7 @@ static const struct vm_operations_struct ext2_dax_vm_ops = {
 	.pfn_mkwrite	= ext2_dax_fault,
 };
 
-static int ext2_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int ext2_file_mmap(struct file *file, struct mm_area *vma)
 {
 	if (!IS_DAX(file_inode(file)))
 		return generic_file_mmap(file, vma);
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index beb078ee4811..f2bf09c18e64 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -799,7 +799,7 @@ static const struct vm_operations_struct ext4_file_vm_ops = {
 	.page_mkwrite   = ext4_page_mkwrite,
 };
 
-static int ext4_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int ext4_file_mmap(struct file *file, struct mm_area *vma)
 {
 	int ret;
 	struct inode *inode = file->f_mapping->host;
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 1dc09ed5d403..335fe55c24d2 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -6172,7 +6172,7 @@ static int ext4_bh_unmapped(handle_t *handle, struct inode *inode,
 
 vm_fault_t ext4_page_mkwrite(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct folio *folio = page_folio(vmf->page);
 	loff_t size;
 	unsigned long len;
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index abbcbb5865a3..1423c6e7e488 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -532,7 +532,7 @@ static loff_t f2fs_llseek(struct file *file, loff_t offset, int whence)
 	return -EINVAL;
 }
 
-static int f2fs_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int f2fs_file_mmap(struct file *file, struct mm_area *vma)
 {
 	struct inode *inode = file_inode(file);
 
diff --git a/fs/fuse/dax.c b/fs/fuse/dax.c
index 0502bf3cdf6a..72cb7b6a361c 100644
--- a/fs/fuse/dax.c
+++ b/fs/fuse/dax.c
@@ -821,7 +821,7 @@ static const struct vm_operations_struct fuse_dax_vm_ops = {
 	.pfn_mkwrite	= fuse_dax_pfn_mkwrite,
 };
 
-int fuse_dax_mmap(struct file *file, struct vm_area_struct *vma)
+int fuse_dax_mmap(struct file *file, struct mm_area *vma)
 {
 	file_accessed(file);
 	vma->vm_ops = &fuse_dax_vm_ops;
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 754378dd9f71..f75907398e60 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -2576,7 +2576,7 @@ static int fuse_launder_folio(struct folio *folio)
  * Write back dirty data/metadata now (there may not be any suitable
  * open files later for data)
  */
-static void fuse_vma_close(struct vm_area_struct *vma)
+static void fuse_vma_close(struct mm_area *vma)
 {
 	int err;
 
@@ -2622,7 +2622,7 @@ static const struct vm_operations_struct fuse_file_vm_ops = {
 	.page_mkwrite	= fuse_page_mkwrite,
 };
 
-static int fuse_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int fuse_file_mmap(struct file *file, struct mm_area *vma)
 {
 	struct fuse_file *ff = file->private_data;
 	struct fuse_conn *fc = ff->fm->fc;
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index d56d4fd956db..d86e9e62dbfc 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -1470,7 +1470,7 @@ void fuse_free_conn(struct fuse_conn *fc);
 
 ssize_t fuse_dax_read_iter(struct kiocb *iocb, struct iov_iter *to);
 ssize_t fuse_dax_write_iter(struct kiocb *iocb, struct iov_iter *from);
-int fuse_dax_mmap(struct file *file, struct vm_area_struct *vma);
+int fuse_dax_mmap(struct file *file, struct mm_area *vma);
 int fuse_dax_break_layouts(struct inode *inode, u64 dmap_start, u64 dmap_end);
 int fuse_dax_conn_alloc(struct fuse_conn *fc, enum fuse_dax_mode mode,
 			struct dax_device *dax_dev);
@@ -1567,7 +1567,7 @@ ssize_t fuse_passthrough_splice_read(struct file *in, loff_t *ppos,
 ssize_t fuse_passthrough_splice_write(struct pipe_inode_info *pipe,
 				      struct file *out, loff_t *ppos,
 				      size_t len, unsigned int flags);
-ssize_t fuse_passthrough_mmap(struct file *file, struct vm_area_struct *vma);
+ssize_t fuse_passthrough_mmap(struct file *file, struct mm_area *vma);
 
 #ifdef CONFIG_SYSCTL
 extern int fuse_sysctl_register(void);
diff --git a/fs/fuse/passthrough.c b/fs/fuse/passthrough.c
index 607ef735ad4a..6245304c35f2 100644
--- a/fs/fuse/passthrough.c
+++ b/fs/fuse/passthrough.c
@@ -129,7 +129,7 @@ ssize_t fuse_passthrough_splice_write(struct pipe_inode_info *pipe,
 	return ret;
 }
 
-ssize_t fuse_passthrough_mmap(struct file *file, struct vm_area_struct *vma)
+ssize_t fuse_passthrough_mmap(struct file *file, struct mm_area *vma)
 {
 	struct fuse_file *ff = file->private_data;
 	struct file *backing_file = fuse_file_passthrough(ff);
diff --git a/fs/gfs2/file.c b/fs/gfs2/file.c
index fd1147aa3891..21c6af00183e 100644
--- a/fs/gfs2/file.c
+++ b/fs/gfs2/file.c
@@ -588,7 +588,7 @@ static const struct vm_operations_struct gfs2_vm_ops = {
  * Returns: 0
  */
 
-static int gfs2_mmap(struct file *file, struct vm_area_struct *vma)
+static int gfs2_mmap(struct file *file, struct mm_area *vma)
 {
 	struct gfs2_inode *ip = GFS2_I(file->f_mapping->host);
 
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index e4de5425838d..33c1e3dd8b90 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -96,7 +96,7 @@ static const struct fs_parameter_spec hugetlb_fs_parameters[] = {
 #define PGOFF_LOFFT_MAX \
 	(((1UL << (PAGE_SHIFT + 1)) - 1) <<  (BITS_PER_LONG - (PAGE_SHIFT + 1)))
 
-static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int hugetlbfs_file_mmap(struct file *file, struct mm_area *vma)
 {
 	struct inode *inode = file_inode(file);
 	loff_t len, vma_len;
@@ -340,7 +340,7 @@ static void hugetlb_delete_from_page_cache(struct folio *folio)
  * mutex for the page in the mapping.  So, we can not race with page being
  * faulted into the vma.
  */
-static bool hugetlb_vma_maps_pfn(struct vm_area_struct *vma,
+static bool hugetlb_vma_maps_pfn(struct mm_area *vma,
 				unsigned long addr, unsigned long pfn)
 {
 	pte_t *ptep, pte;
@@ -365,7 +365,7 @@ static bool hugetlb_vma_maps_pfn(struct vm_area_struct *vma,
  * which overlap the truncated area starting at pgoff,
  * and no vma on a 32-bit arch can span beyond the 4GB.
  */
-static unsigned long vma_offset_start(struct vm_area_struct *vma, pgoff_t start)
+static unsigned long vma_offset_start(struct mm_area *vma, pgoff_t start)
 {
 	unsigned long offset = 0;
 
@@ -375,7 +375,7 @@ static unsigned long vma_offset_start(struct vm_area_struct *vma, pgoff_t start)
 	return vma->vm_start + offset;
 }
 
-static unsigned long vma_offset_end(struct vm_area_struct *vma, pgoff_t end)
+static unsigned long vma_offset_end(struct mm_area *vma, pgoff_t end)
 {
 	unsigned long t_end;
 
@@ -399,7 +399,7 @@ static void hugetlb_unmap_file_folio(struct hstate *h,
 	struct rb_root_cached *root = &mapping->i_mmap;
 	struct hugetlb_vma_lock *vma_lock;
 	unsigned long pfn = folio_pfn(folio);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long v_start;
 	unsigned long v_end;
 	pgoff_t start, end;
@@ -479,7 +479,7 @@ static void
 hugetlb_vmdelete_list(struct rb_root_cached *root, pgoff_t start, pgoff_t end,
 		      zap_flags_t zap_flags)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	/*
 	 * end == 0 indicates that the entire range after start should be
@@ -730,7 +730,7 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset,
 	struct hugetlbfs_inode_info *info = HUGETLBFS_I(inode);
 	struct address_space *mapping = inode->i_mapping;
 	struct hstate *h = hstate_inode(inode);
-	struct vm_area_struct pseudo_vma;
+	struct mm_area pseudo_vma;
 	struct mm_struct *mm = current->mm;
 	loff_t hpage_size = huge_page_size(h);
 	unsigned long hpage_shift = huge_page_shift(h);
diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
index 66fe8fe41f06..cd6ff826d3f5 100644
--- a/fs/kernfs/file.c
+++ b/fs/kernfs/file.c
@@ -349,7 +349,7 @@ static ssize_t kernfs_fop_write_iter(struct kiocb *iocb, struct iov_iter *iter)
 	return len;
 }
 
-static void kernfs_vma_open(struct vm_area_struct *vma)
+static void kernfs_vma_open(struct mm_area *vma)
 {
 	struct file *file = vma->vm_file;
 	struct kernfs_open_file *of = kernfs_of(file);
@@ -408,7 +408,7 @@ static vm_fault_t kernfs_vma_page_mkwrite(struct vm_fault *vmf)
 	return ret;
 }
 
-static int kernfs_vma_access(struct vm_area_struct *vma, unsigned long addr,
+static int kernfs_vma_access(struct mm_area *vma, unsigned long addr,
 			     void *buf, int len, int write)
 {
 	struct file *file = vma->vm_file;
@@ -436,7 +436,7 @@ static const struct vm_operations_struct kernfs_vm_ops = {
 	.access		= kernfs_vma_access,
 };
 
-static int kernfs_fop_mmap(struct file *file, struct vm_area_struct *vma)
+static int kernfs_fop_mmap(struct file *file, struct mm_area *vma)
 {
 	struct kernfs_open_file *of = kernfs_of(file);
 	const struct kernfs_ops *ops;
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 033feeab8c34..62e293a33325 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -207,7 +207,7 @@ nfs_file_splice_read(struct file *in, loff_t *ppos, struct pipe_inode_info *pipe
 EXPORT_SYMBOL_GPL(nfs_file_splice_read);
 
 int
-nfs_file_mmap(struct file *file, struct vm_area_struct *vma)
+nfs_file_mmap(struct file *file, struct mm_area *vma)
 {
 	struct inode *inode = file_inode(file);
 	int	status;
diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h
index ec8d32d0e2e9..007e50305767 100644
--- a/fs/nfs/internal.h
+++ b/fs/nfs/internal.h
@@ -432,7 +432,7 @@ loff_t nfs_file_llseek(struct file *, loff_t, int);
 ssize_t nfs_file_read(struct kiocb *, struct iov_iter *);
 ssize_t nfs_file_splice_read(struct file *in, loff_t *ppos, struct pipe_inode_info *pipe,
 			     size_t len, unsigned int flags);
-int nfs_file_mmap(struct file *, struct vm_area_struct *);
+int nfs_file_mmap(struct file *, struct mm_area *);
 ssize_t nfs_file_write(struct kiocb *, struct iov_iter *);
 int nfs_file_release(struct inode *, struct file *);
 int nfs_lock(struct file *, int, struct file_lock *);
diff --git a/fs/nilfs2/file.c b/fs/nilfs2/file.c
index 0e3fc5ba33c7..3e424224cb56 100644
--- a/fs/nilfs2/file.c
+++ b/fs/nilfs2/file.c
@@ -44,7 +44,7 @@ int nilfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
 
 static vm_fault_t nilfs_page_mkwrite(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct folio *folio = page_folio(vmf->page);
 	struct inode *inode = file_inode(vma->vm_file);
 	struct nilfs_transaction_info ti;
@@ -125,7 +125,7 @@ static const struct vm_operations_struct nilfs_file_vm_ops = {
 	.page_mkwrite	= nilfs_page_mkwrite,
 };
 
-static int nilfs_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int nilfs_file_mmap(struct file *file, struct mm_area *vma)
 {
 	file_accessed(file);
 	vma->vm_ops = &nilfs_file_vm_ops;
diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c
index 9b6a3f8d2e7c..72370c69d6dc 100644
--- a/fs/ntfs3/file.c
+++ b/fs/ntfs3/file.c
@@ -347,7 +347,7 @@ static int ntfs_zero_range(struct inode *inode, u64 vbo, u64 vbo_to)
 /*
  * ntfs_file_mmap - file_operations::mmap
  */
-static int ntfs_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int ntfs_file_mmap(struct file *file, struct mm_area *vma)
 {
 	struct inode *inode = file_inode(file);
 	struct ntfs_inode *ni = ntfs_i(inode);
diff --git a/fs/ocfs2/mmap.c b/fs/ocfs2/mmap.c
index 6a314e9f2b49..9586d4d287e7 100644
--- a/fs/ocfs2/mmap.c
+++ b/fs/ocfs2/mmap.c
@@ -30,7 +30,7 @@
 
 static vm_fault_t ocfs2_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	sigset_t oldset;
 	vm_fault_t ret;
 
@@ -159,7 +159,7 @@ static const struct vm_operations_struct ocfs2_file_vm_ops = {
 	.page_mkwrite	= ocfs2_page_mkwrite,
 };
 
-int ocfs2_mmap(struct file *file, struct vm_area_struct *vma)
+int ocfs2_mmap(struct file *file, struct mm_area *vma)
 {
 	int ret = 0, lock_level = 0;
 
diff --git a/fs/ocfs2/mmap.h b/fs/ocfs2/mmap.h
index 1051507cc684..8cf4bc586fb2 100644
--- a/fs/ocfs2/mmap.h
+++ b/fs/ocfs2/mmap.h
@@ -2,6 +2,6 @@
 #ifndef OCFS2_MMAP_H
 #define OCFS2_MMAP_H
 
-int ocfs2_mmap(struct file *file, struct vm_area_struct *vma);
+int ocfs2_mmap(struct file *file, struct mm_area *vma);
 
 #endif  /* OCFS2_MMAP_H */
diff --git a/fs/orangefs/file.c b/fs/orangefs/file.c
index 90c49c0de243..290e33bad497 100644
--- a/fs/orangefs/file.c
+++ b/fs/orangefs/file.c
@@ -398,7 +398,7 @@ static const struct vm_operations_struct orangefs_file_vm_ops = {
 /*
  * Memory map a region of a file.
  */
-static int orangefs_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int orangefs_file_mmap(struct file *file, struct mm_area *vma)
 {
 	int ret;
 
diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c
index 969b458100fe..400f63fc2408 100644
--- a/fs/overlayfs/file.c
+++ b/fs/overlayfs/file.c
@@ -476,7 +476,7 @@ static int ovl_fsync(struct file *file, loff_t start, loff_t end, int datasync)
 	return ret;
 }
 
-static int ovl_mmap(struct file *file, struct vm_area_struct *vma)
+static int ovl_mmap(struct file *file, struct mm_area *vma)
 {
 	struct ovl_file *of = file->private_data;
 	struct backing_file_ctx ctx = {
diff --git a/fs/proc/base.c b/fs/proc/base.c
index b0d4e1908b22..4f23e14bee67 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -2244,7 +2244,7 @@ static const struct dentry_operations tid_map_files_dentry_operations = {
 static int map_files_get_link(struct dentry *dentry, struct path *path)
 {
 	unsigned long vm_start, vm_end;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct task_struct *task;
 	struct mm_struct *mm;
 	int rc;
@@ -2341,7 +2341,7 @@ static struct dentry *proc_map_files_lookup(struct inode *dir,
 		struct dentry *dentry, unsigned int flags)
 {
 	unsigned long vm_start, vm_end;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct task_struct *task;
 	struct dentry *result;
 	struct mm_struct *mm;
@@ -2395,7 +2395,7 @@ static const struct inode_operations proc_map_files_inode_operations = {
 static int
 proc_map_files_readdir(struct file *file, struct dir_context *ctx)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct task_struct *task;
 	struct mm_struct *mm;
 	unsigned long nr_files, pos, i;
diff --git a/fs/proc/inode.c b/fs/proc/inode.c
index a3eb3b740f76..d5a6e680a0bd 100644
--- a/fs/proc/inode.c
+++ b/fs/proc/inode.c
@@ -412,7 +412,7 @@ static long proc_reg_compat_ioctl(struct file *file, unsigned int cmd, unsigned
 }
 #endif
 
-static int pde_mmap(struct proc_dir_entry *pde, struct file *file, struct vm_area_struct *vma)
+static int pde_mmap(struct proc_dir_entry *pde, struct file *file, struct mm_area *vma)
 {
 	__auto_type mmap = pde->proc_ops->proc_mmap;
 	if (mmap)
@@ -420,7 +420,7 @@ static int pde_mmap(struct proc_dir_entry *pde, struct file *file, struct vm_are
 	return -EIO;
 }
 
-static int proc_reg_mmap(struct file *file, struct vm_area_struct *vma)
+static int proc_reg_mmap(struct file *file, struct mm_area *vma)
 {
 	struct proc_dir_entry *pde = PDE(file_inode(file));
 	int rv = -EIO;
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index 994cde10e3f4..66a47c2a2b98 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -127,10 +127,10 @@ static void release_task_mempolicy(struct proc_maps_private *priv)
 }
 #endif
 
-static struct vm_area_struct *proc_get_vma(struct proc_maps_private *priv,
+static struct mm_area *proc_get_vma(struct proc_maps_private *priv,
 						loff_t *ppos)
 {
-	struct vm_area_struct *vma = vma_next(&priv->iter);
+	struct mm_area *vma = vma_next(&priv->iter);
 
 	if (vma) {
 		*ppos = vma->vm_start;
@@ -240,7 +240,7 @@ static int do_maps_open(struct inode *inode, struct file *file,
 				sizeof(struct proc_maps_private));
 }
 
-static void get_vma_name(struct vm_area_struct *vma,
+static void get_vma_name(struct mm_area *vma,
 			 const struct path **path,
 			 const char **name,
 			 const char **name_fmt)
@@ -322,7 +322,7 @@ static void show_vma_header_prefix(struct seq_file *m,
 }
 
 static void
-show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
+show_map_vma(struct seq_file *m, struct mm_area *vma)
 {
 	const struct path *path;
 	const char *name_fmt, *name;
@@ -394,20 +394,20 @@ static int query_vma_setup(struct mm_struct *mm)
 	return mmap_read_lock_killable(mm);
 }
 
-static void query_vma_teardown(struct mm_struct *mm, struct vm_area_struct *vma)
+static void query_vma_teardown(struct mm_struct *mm, struct mm_area *vma)
 {
 	mmap_read_unlock(mm);
 }
 
-static struct vm_area_struct *query_vma_find_by_addr(struct mm_struct *mm, unsigned long addr)
+static struct mm_area *query_vma_find_by_addr(struct mm_struct *mm, unsigned long addr)
 {
 	return find_vma(mm, addr);
 }
 
-static struct vm_area_struct *query_matching_vma(struct mm_struct *mm,
+static struct mm_area *query_matching_vma(struct mm_struct *mm,
 						 unsigned long addr, u32 flags)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 next_vma:
 	vma = query_vma_find_by_addr(mm, addr);
@@ -454,7 +454,7 @@ static struct vm_area_struct *query_matching_vma(struct mm_struct *mm,
 static int do_procmap_query(struct proc_maps_private *priv, void __user *uarg)
 {
 	struct procmap_query karg;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm;
 	const char *name = NULL;
 	char build_id_buf[BUILD_ID_SIZE_MAX], *name_buf = NULL;
@@ -780,7 +780,7 @@ static int smaps_pte_hole(unsigned long addr, unsigned long end,
 			  __always_unused int depth, struct mm_walk *walk)
 {
 	struct mem_size_stats *mss = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 
 	mss->swap += shmem_partial_swap_usage(walk->vma->vm_file->f_mapping,
 					      linear_page_index(vma, addr),
@@ -806,7 +806,7 @@ static void smaps_pte_entry(pte_t *pte, unsigned long addr,
 		struct mm_walk *walk)
 {
 	struct mem_size_stats *mss = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	bool locked = !!(vma->vm_flags & VM_LOCKED);
 	struct page *page = NULL;
 	bool present = false, young = false, dirty = false;
@@ -854,7 +854,7 @@ static void smaps_pmd_entry(pmd_t *pmd, unsigned long addr,
 		struct mm_walk *walk)
 {
 	struct mem_size_stats *mss = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	bool locked = !!(vma->vm_flags & VM_LOCKED);
 	struct page *page = NULL;
 	bool present = false;
@@ -894,7 +894,7 @@ static void smaps_pmd_entry(pmd_t *pmd, unsigned long addr,
 static int smaps_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
 			   struct mm_walk *walk)
 {
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	pte_t *pte;
 	spinlock_t *ptl;
 
@@ -918,7 +918,7 @@ static int smaps_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
 	return 0;
 }
 
-static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma)
+static void show_smap_vma_flags(struct seq_file *m, struct mm_area *vma)
 {
 	/*
 	 * Don't forget to update Documentation/ on changes.
@@ -1019,7 +1019,7 @@ static int smaps_hugetlb_range(pte_t *pte, unsigned long hmask,
 				 struct mm_walk *walk)
 {
 	struct mem_size_stats *mss = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	pte_t ptent = huge_ptep_get(walk->mm, addr, pte);
 	struct folio *folio = NULL;
 	bool present = false;
@@ -1067,7 +1067,7 @@ static const struct mm_walk_ops smaps_shmem_walk_ops = {
  *
  * Use vm_start of @vma as the beginning address if @start is 0.
  */
-static void smap_gather_stats(struct vm_area_struct *vma,
+static void smap_gather_stats(struct mm_area *vma,
 		struct mem_size_stats *mss, unsigned long start)
 {
 	const struct mm_walk_ops *ops = &smaps_walk_ops;
@@ -1150,7 +1150,7 @@ static void __show_smap(struct seq_file *m, const struct mem_size_stats *mss,
 
 static int show_smap(struct seq_file *m, void *v)
 {
-	struct vm_area_struct *vma = v;
+	struct mm_area *vma = v;
 	struct mem_size_stats mss = {};
 
 	smap_gather_stats(vma, &mss, 0);
@@ -1180,7 +1180,7 @@ static int show_smaps_rollup(struct seq_file *m, void *v)
 	struct proc_maps_private *priv = m->private;
 	struct mem_size_stats mss = {};
 	struct mm_struct *mm = priv->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long vma_start = 0, last_vma_end = 0;
 	int ret = 0;
 	VMA_ITERATOR(vmi, mm, 0);
@@ -1380,7 +1380,7 @@ struct clear_refs_private {
 
 #ifdef CONFIG_MEM_SOFT_DIRTY
 
-static inline bool pte_is_pinned(struct vm_area_struct *vma, unsigned long addr, pte_t pte)
+static inline bool pte_is_pinned(struct mm_area *vma, unsigned long addr, pte_t pte)
 {
 	struct folio *folio;
 
@@ -1396,7 +1396,7 @@ static inline bool pte_is_pinned(struct vm_area_struct *vma, unsigned long addr,
 	return folio_maybe_dma_pinned(folio);
 }
 
-static inline void clear_soft_dirty(struct vm_area_struct *vma,
+static inline void clear_soft_dirty(struct mm_area *vma,
 		unsigned long addr, pte_t *pte)
 {
 	/*
@@ -1422,14 +1422,14 @@ static inline void clear_soft_dirty(struct vm_area_struct *vma,
 	}
 }
 #else
-static inline void clear_soft_dirty(struct vm_area_struct *vma,
+static inline void clear_soft_dirty(struct mm_area *vma,
 		unsigned long addr, pte_t *pte)
 {
 }
 #endif
 
 #if defined(CONFIG_MEM_SOFT_DIRTY) && defined(CONFIG_TRANSPARENT_HUGEPAGE)
-static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
+static inline void clear_soft_dirty_pmd(struct mm_area *vma,
 		unsigned long addr, pmd_t *pmdp)
 {
 	pmd_t old, pmd = *pmdp;
@@ -1452,7 +1452,7 @@ static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
 	}
 }
 #else
-static inline void clear_soft_dirty_pmd(struct vm_area_struct *vma,
+static inline void clear_soft_dirty_pmd(struct mm_area *vma,
 		unsigned long addr, pmd_t *pmdp)
 {
 }
@@ -1462,7 +1462,7 @@ static int clear_refs_pte_range(pmd_t *pmd, unsigned long addr,
 				unsigned long end, struct mm_walk *walk)
 {
 	struct clear_refs_private *cp = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	pte_t *pte, ptent;
 	spinlock_t *ptl;
 	struct folio *folio;
@@ -1522,7 +1522,7 @@ static int clear_refs_test_walk(unsigned long start, unsigned long end,
 				struct mm_walk *walk)
 {
 	struct clear_refs_private *cp = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 
 	if (vma->vm_flags & VM_PFNMAP)
 		return 1;
@@ -1552,7 +1552,7 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
 	struct task_struct *task;
 	char buffer[PROC_NUMBUF] = {};
 	struct mm_struct *mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	enum clear_refs_types type;
 	int itype;
 	int rv;
@@ -1680,7 +1680,7 @@ static int pagemap_pte_hole(unsigned long start, unsigned long end,
 	int err = 0;
 
 	while (addr < end) {
-		struct vm_area_struct *vma = find_vma(walk->mm, addr);
+		struct mm_area *vma = find_vma(walk->mm, addr);
 		pagemap_entry_t pme = make_pme(0, 0);
 		/* End of address space hole, which we mark as non-present. */
 		unsigned long hole_end;
@@ -1713,7 +1713,7 @@ static int pagemap_pte_hole(unsigned long start, unsigned long end,
 }
 
 static pagemap_entry_t pte_to_pagemap_entry(struct pagemapread *pm,
-		struct vm_area_struct *vma, unsigned long addr, pte_t pte)
+		struct mm_area *vma, unsigned long addr, pte_t pte)
 {
 	u64 frame = 0, flags = 0;
 	struct page *page = NULL;
@@ -1774,7 +1774,7 @@ static pagemap_entry_t pte_to_pagemap_entry(struct pagemapread *pm,
 static int pagemap_pmd_range(pmd_t *pmdp, unsigned long addr, unsigned long end,
 			     struct mm_walk *walk)
 {
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	struct pagemapread *pm = walk->private;
 	spinlock_t *ptl;
 	pte_t *pte, *orig_pte;
@@ -1887,7 +1887,7 @@ static int pagemap_hugetlb_range(pte_t *ptep, unsigned long hmask,
 				 struct mm_walk *walk)
 {
 	struct pagemapread *pm = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	u64 flags = 0, frame = 0;
 	int err = 0;
 	pte_t pte;
@@ -2099,7 +2099,7 @@ struct pagemap_scan_private {
 };
 
 static unsigned long pagemap_page_category(struct pagemap_scan_private *p,
-					   struct vm_area_struct *vma,
+					   struct mm_area *vma,
 					   unsigned long addr, pte_t pte)
 {
 	unsigned long categories = 0;
@@ -2141,7 +2141,7 @@ static unsigned long pagemap_page_category(struct pagemap_scan_private *p,
 	return categories;
 }
 
-static void make_uffd_wp_pte(struct vm_area_struct *vma,
+static void make_uffd_wp_pte(struct mm_area *vma,
 			     unsigned long addr, pte_t *pte, pte_t ptent)
 {
 	if (pte_present(ptent)) {
@@ -2161,7 +2161,7 @@ static void make_uffd_wp_pte(struct vm_area_struct *vma,
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 static unsigned long pagemap_thp_category(struct pagemap_scan_private *p,
-					  struct vm_area_struct *vma,
+					  struct mm_area *vma,
 					  unsigned long addr, pmd_t pmd)
 {
 	unsigned long categories = PAGE_IS_HUGE;
@@ -2203,7 +2203,7 @@ static unsigned long pagemap_thp_category(struct pagemap_scan_private *p,
 	return categories;
 }
 
-static void make_uffd_wp_pmd(struct vm_area_struct *vma,
+static void make_uffd_wp_pmd(struct mm_area *vma,
 			     unsigned long addr, pmd_t *pmdp)
 {
 	pmd_t old, pmd = *pmdp;
@@ -2250,7 +2250,7 @@ static unsigned long pagemap_hugetlb_category(pte_t pte)
 	return categories;
 }
 
-static void make_uffd_wp_huge_pte(struct vm_area_struct *vma,
+static void make_uffd_wp_huge_pte(struct mm_area *vma,
 				  unsigned long addr, pte_t *ptep,
 				  pte_t ptent)
 {
@@ -2316,7 +2316,7 @@ static int pagemap_scan_test_walk(unsigned long start, unsigned long end,
 				  struct mm_walk *walk)
 {
 	struct pagemap_scan_private *p = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	unsigned long vma_category = 0;
 	bool wp_allowed = userfaultfd_wp_async(vma) &&
 	    userfaultfd_wp_use_markers(vma);
@@ -2423,7 +2423,7 @@ static int pagemap_scan_thp_entry(pmd_t *pmd, unsigned long start,
 {
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 	struct pagemap_scan_private *p = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	unsigned long categories;
 	spinlock_t *ptl;
 	int ret = 0;
@@ -2473,7 +2473,7 @@ static int pagemap_scan_pmd_entry(pmd_t *pmd, unsigned long start,
 				  unsigned long end, struct mm_walk *walk)
 {
 	struct pagemap_scan_private *p = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	unsigned long addr, flush_end = 0;
 	pte_t *pte, *start_pte;
 	spinlock_t *ptl;
@@ -2573,7 +2573,7 @@ static int pagemap_scan_hugetlb_entry(pte_t *ptep, unsigned long hmask,
 				      struct mm_walk *walk)
 {
 	struct pagemap_scan_private *p = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	unsigned long categories;
 	spinlock_t *ptl;
 	int ret = 0;
@@ -2632,7 +2632,7 @@ static int pagemap_scan_pte_hole(unsigned long addr, unsigned long end,
 				 int depth, struct mm_walk *walk)
 {
 	struct pagemap_scan_private *p = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	int ret, err;
 
 	if (!vma || !pagemap_scan_is_interesting_page(p->cur_vma_category, p))
@@ -2905,7 +2905,7 @@ static void gather_stats(struct page *page, struct numa_maps *md, int pte_dirty,
 	md->node[folio_nid(folio)] += nr_pages;
 }
 
-static struct page *can_gather_numa_stats(pte_t pte, struct vm_area_struct *vma,
+static struct page *can_gather_numa_stats(pte_t pte, struct mm_area *vma,
 		unsigned long addr)
 {
 	struct page *page;
@@ -2930,7 +2930,7 @@ static struct page *can_gather_numa_stats(pte_t pte, struct vm_area_struct *vma,
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 static struct page *can_gather_numa_stats_pmd(pmd_t pmd,
-					      struct vm_area_struct *vma,
+					      struct mm_area *vma,
 					      unsigned long addr)
 {
 	struct page *page;
@@ -2958,7 +2958,7 @@ static int gather_pte_stats(pmd_t *pmd, unsigned long addr,
 		unsigned long end, struct mm_walk *walk)
 {
 	struct numa_maps *md = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	spinlock_t *ptl;
 	pte_t *orig_pte;
 	pte_t *pte;
@@ -3032,7 +3032,7 @@ static int show_numa_map(struct seq_file *m, void *v)
 {
 	struct numa_maps_private *numa_priv = m->private;
 	struct proc_maps_private *proc_priv = &numa_priv->proc_maps;
-	struct vm_area_struct *vma = v;
+	struct mm_area *vma = v;
 	struct numa_maps *md = &numa_priv->md;
 	struct file *file = vma->vm_file;
 	struct mm_struct *mm = vma->vm_mm;
diff --git a/fs/proc/task_nommu.c b/fs/proc/task_nommu.c
index bce674533000..e45f014b5c81 100644
--- a/fs/proc/task_nommu.c
+++ b/fs/proc/task_nommu.c
@@ -21,7 +21,7 @@
 void task_mem(struct seq_file *m, struct mm_struct *mm)
 {
 	VMA_ITERATOR(vmi, mm, 0);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct vm_region *region;
 	unsigned long bytes = 0, sbytes = 0, slack = 0, size;
 
@@ -81,7 +81,7 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
 unsigned long task_vsize(struct mm_struct *mm)
 {
 	VMA_ITERATOR(vmi, mm, 0);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long vsize = 0;
 
 	mmap_read_lock(mm);
@@ -96,7 +96,7 @@ unsigned long task_statm(struct mm_struct *mm,
 			 unsigned long *data, unsigned long *resident)
 {
 	VMA_ITERATOR(vmi, mm, 0);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct vm_region *region;
 	unsigned long size = kobjsize(mm);
 
@@ -124,7 +124,7 @@ unsigned long task_statm(struct mm_struct *mm,
 /*
  * display a single VMA to a sequenced file
  */
-static int nommu_vma_show(struct seq_file *m, struct vm_area_struct *vma)
+static int nommu_vma_show(struct seq_file *m, struct mm_area *vma)
 {
 	struct mm_struct *mm = vma->vm_mm;
 	unsigned long ino = 0;
@@ -175,10 +175,10 @@ static int show_map(struct seq_file *m, void *_p)
 	return nommu_vma_show(m, _p);
 }
 
-static struct vm_area_struct *proc_get_vma(struct proc_maps_private *priv,
+static struct mm_area *proc_get_vma(struct proc_maps_private *priv,
 						loff_t *ppos)
 {
-	struct vm_area_struct *vma = vma_next(&priv->iter);
+	struct mm_area *vma = vma_next(&priv->iter);
 
 	if (vma) {
 		*ppos = vma->vm_start;
diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c
index 10d01eb09c43..8e84ff70f57e 100644
--- a/fs/proc/vmcore.c
+++ b/fs/proc/vmcore.c
@@ -249,7 +249,7 @@ ssize_t __weak elfcorehdr_read_notes(char *buf, size_t count, u64 *ppos)
 /*
  * Architectures may override this function to map oldmem
  */
-int __weak remap_oldmem_pfn_range(struct vm_area_struct *vma,
+int __weak remap_oldmem_pfn_range(struct mm_area *vma,
 				  unsigned long from, unsigned long pfn,
 				  unsigned long size, pgprot_t prot)
 {
@@ -295,7 +295,7 @@ static int vmcoredd_copy_dumps(struct iov_iter *iter, u64 start, size_t size)
 }
 
 #ifdef CONFIG_MMU
-static int vmcoredd_mmap_dumps(struct vm_area_struct *vma, unsigned long dst,
+static int vmcoredd_mmap_dumps(struct mm_area *vma, unsigned long dst,
 			       u64 start, size_t size)
 {
 	struct vmcoredd_node *dump;
@@ -511,7 +511,7 @@ static const struct vm_operations_struct vmcore_mmap_ops = {
  * remap_oldmem_pfn_checked - do remap_oldmem_pfn_range replacing all pages
  * reported as not being ram with the zero page.
  *
- * @vma: vm_area_struct describing requested mapping
+ * @vma: mm_area describing requested mapping
  * @from: start remapping from
  * @pfn: page frame number to start remapping to
  * @size: remapping size
@@ -519,7 +519,7 @@ static const struct vm_operations_struct vmcore_mmap_ops = {
  *
  * Returns zero on success, -EAGAIN on failure.
  */
-static int remap_oldmem_pfn_checked(struct vm_area_struct *vma,
+static int remap_oldmem_pfn_checked(struct mm_area *vma,
 				    unsigned long from, unsigned long pfn,
 				    unsigned long size, pgprot_t prot)
 {
@@ -569,7 +569,7 @@ static int remap_oldmem_pfn_checked(struct vm_area_struct *vma,
 	return -EAGAIN;
 }
 
-static int vmcore_remap_oldmem_pfn(struct vm_area_struct *vma,
+static int vmcore_remap_oldmem_pfn(struct mm_area *vma,
 			    unsigned long from, unsigned long pfn,
 			    unsigned long size, pgprot_t prot)
 {
@@ -588,7 +588,7 @@ static int vmcore_remap_oldmem_pfn(struct vm_area_struct *vma,
 	return ret;
 }
 
-static int mmap_vmcore(struct file *file, struct vm_area_struct *vma)
+static int mmap_vmcore(struct file *file, struct mm_area *vma)
 {
 	size_t size = vma->vm_end - vma->vm_start;
 	u64 start, end, len, tsz;
@@ -701,7 +701,7 @@ static int mmap_vmcore(struct file *file, struct vm_area_struct *vma)
 	return -EAGAIN;
 }
 #else
-static int mmap_vmcore(struct file *file, struct vm_area_struct *vma)
+static int mmap_vmcore(struct file *file, struct mm_area *vma)
 {
 	return -ENOSYS;
 }
diff --git a/fs/ramfs/file-nommu.c b/fs/ramfs/file-nommu.c
index 7a6d980e614d..39698a0acbf8 100644
--- a/fs/ramfs/file-nommu.c
+++ b/fs/ramfs/file-nommu.c
@@ -28,7 +28,7 @@ static unsigned long ramfs_nommu_get_unmapped_area(struct file *file,
 						   unsigned long len,
 						   unsigned long pgoff,
 						   unsigned long flags);
-static int ramfs_nommu_mmap(struct file *file, struct vm_area_struct *vma);
+static int ramfs_nommu_mmap(struct file *file, struct mm_area *vma);
 
 static unsigned ramfs_mmap_capabilities(struct file *file)
 {
@@ -262,7 +262,7 @@ static unsigned long ramfs_nommu_get_unmapped_area(struct file *file,
 /*
  * set up a mapping for shared memory segments
  */
-static int ramfs_nommu_mmap(struct file *file, struct vm_area_struct *vma)
+static int ramfs_nommu_mmap(struct file *file, struct mm_area *vma)
 {
 	if (!is_nommu_shared_mapping(vma->vm_flags))
 		return -ENOSYS;
diff --git a/fs/romfs/mmap-nommu.c b/fs/romfs/mmap-nommu.c
index 4520ca413867..704bc650e9fd 100644
--- a/fs/romfs/mmap-nommu.c
+++ b/fs/romfs/mmap-nommu.c
@@ -61,7 +61,7 @@ static unsigned long romfs_get_unmapped_area(struct file *file,
  * permit a R/O mapping to be made directly through onto an MTD device if
  * possible
  */
-static int romfs_mmap(struct file *file, struct vm_area_struct *vma)
+static int romfs_mmap(struct file *file, struct mm_area *vma)
 {
 	return is_nommu_shared_mapping(vma->vm_flags) ? 0 : -ENOSYS;
 }
diff --git a/fs/smb/client/cifsfs.h b/fs/smb/client/cifsfs.h
index 8dea0cf3a8de..cadb123692c1 100644
--- a/fs/smb/client/cifsfs.h
+++ b/fs/smb/client/cifsfs.h
@@ -103,8 +103,8 @@ extern int cifs_lock(struct file *, int, struct file_lock *);
 extern int cifs_fsync(struct file *, loff_t, loff_t, int);
 extern int cifs_strict_fsync(struct file *, loff_t, loff_t, int);
 extern int cifs_flush(struct file *, fl_owner_t id);
-extern int cifs_file_mmap(struct file *file, struct vm_area_struct *vma);
-extern int cifs_file_strict_mmap(struct file *file, struct vm_area_struct *vma);
+extern int cifs_file_mmap(struct file *file, struct mm_area *vma);
+extern int cifs_file_strict_mmap(struct file *file, struct mm_area *vma);
 extern const struct file_operations cifs_dir_ops;
 extern int cifs_readdir(struct file *file, struct dir_context *ctx);
 
diff --git a/fs/smb/client/file.c b/fs/smb/client/file.c
index 8407fb108664..ab822c809070 100644
--- a/fs/smb/client/file.c
+++ b/fs/smb/client/file.c
@@ -2964,7 +2964,7 @@ static const struct vm_operations_struct cifs_file_vm_ops = {
 	.page_mkwrite = cifs_page_mkwrite,
 };
 
-int cifs_file_strict_mmap(struct file *file, struct vm_area_struct *vma)
+int cifs_file_strict_mmap(struct file *file, struct mm_area *vma)
 {
 	int xid, rc = 0;
 	struct inode *inode = file_inode(file);
@@ -2982,7 +2982,7 @@ int cifs_file_strict_mmap(struct file *file, struct vm_area_struct *vma)
 	return rc;
 }
 
-int cifs_file_mmap(struct file *file, struct vm_area_struct *vma)
+int cifs_file_mmap(struct file *file, struct mm_area *vma)
 {
 	int rc, xid;
 
diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
index c3d3b079aedd..ebddf13bd010 100644
--- a/fs/sysfs/file.c
+++ b/fs/sysfs/file.c
@@ -171,7 +171,7 @@ static ssize_t sysfs_kf_bin_write(struct kernfs_open_file *of, char *buf,
 }
 
 static int sysfs_kf_bin_mmap(struct kernfs_open_file *of,
-			     struct vm_area_struct *vma)
+			     struct mm_area *vma)
 {
 	struct bin_attribute *battr = of->kn->priv;
 	struct kobject *kobj = sysfs_file_kobj(of->kn);
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
index bf311c38d9a8..0f0256b04a4a 100644
--- a/fs/ubifs/file.c
+++ b/fs/ubifs/file.c
@@ -1579,7 +1579,7 @@ static const struct vm_operations_struct ubifs_file_vm_ops = {
 	.page_mkwrite = ubifs_vm_page_mkwrite,
 };
 
-static int ubifs_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int ubifs_file_mmap(struct file *file, struct mm_area *vma)
 {
 	int err;
 
diff --git a/fs/udf/file.c b/fs/udf/file.c
index 0d76c4f37b3e..6d5fa7de4cb6 100644
--- a/fs/udf/file.c
+++ b/fs/udf/file.c
@@ -36,7 +36,7 @@
 
 static vm_fault_t udf_page_mkwrite(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct inode *inode = file_inode(vma->vm_file);
 	struct address_space *mapping = inode->i_mapping;
 	struct folio *folio = page_folio(vmf->page);
@@ -189,7 +189,7 @@ static int udf_release_file(struct inode *inode, struct file *filp)
 	return 0;
 }
 
-static int udf_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int udf_file_mmap(struct file *file, struct mm_area *vma)
 {
 	file_accessed(file);
 	vma->vm_ops = &udf_file_vm_ops;
diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
index d80f94346199..ade022a5af5f 100644
--- a/fs/userfaultfd.c
+++ b/fs/userfaultfd.c
@@ -94,7 +94,7 @@ static bool userfaultfd_wp_async_ctx(struct userfaultfd_ctx *ctx)
  * meaningful when userfaultfd_wp()==true on the vma and when it's
  * anonymous.
  */
-bool userfaultfd_wp_unpopulated(struct vm_area_struct *vma)
+bool userfaultfd_wp_unpopulated(struct mm_area *vma)
 {
 	struct userfaultfd_ctx *ctx = vma->vm_userfaultfd_ctx.ctx;
 
@@ -231,7 +231,7 @@ static inline bool userfaultfd_huge_must_wait(struct userfaultfd_ctx *ctx,
 					      struct vm_fault *vmf,
 					      unsigned long reason)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	pte_t *ptep, pte;
 	bool ret = true;
 
@@ -362,7 +362,7 @@ static inline unsigned int userfaultfd_get_blocking_state(unsigned int flags)
  */
 vm_fault_t handle_userfault(struct vm_fault *vmf, unsigned long reason)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct mm_struct *mm = vma->vm_mm;
 	struct userfaultfd_ctx *ctx;
 	struct userfaultfd_wait_queue uwq;
@@ -614,7 +614,7 @@ static void userfaultfd_event_complete(struct userfaultfd_ctx *ctx,
 	__remove_wait_queue(&ctx->event_wqh, &ewq->wq);
 }
 
-int dup_userfaultfd(struct vm_area_struct *vma, struct list_head *fcs)
+int dup_userfaultfd(struct mm_area *vma, struct list_head *fcs)
 {
 	struct userfaultfd_ctx *ctx = NULL, *octx;
 	struct userfaultfd_fork_ctx *fctx;
@@ -719,7 +719,7 @@ void dup_userfaultfd_fail(struct list_head *fcs)
 	}
 }
 
-void mremap_userfaultfd_prep(struct vm_area_struct *vma,
+void mremap_userfaultfd_prep(struct mm_area *vma,
 			     struct vm_userfaultfd_ctx *vm_ctx)
 {
 	struct userfaultfd_ctx *ctx;
@@ -766,7 +766,7 @@ void mremap_userfaultfd_complete(struct vm_userfaultfd_ctx *vm_ctx,
 	userfaultfd_event_wait_completion(ctx, &ewq);
 }
 
-bool userfaultfd_remove(struct vm_area_struct *vma,
+bool userfaultfd_remove(struct mm_area *vma,
 			unsigned long start, unsigned long end)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -807,7 +807,7 @@ static bool has_unmap_ctx(struct userfaultfd_ctx *ctx, struct list_head *unmaps,
 	return false;
 }
 
-int userfaultfd_unmap_prep(struct vm_area_struct *vma, unsigned long start,
+int userfaultfd_unmap_prep(struct mm_area *vma, unsigned long start,
 			   unsigned long end, struct list_head *unmaps)
 {
 	struct userfaultfd_unmap_ctx *unmap_ctx;
@@ -1239,7 +1239,7 @@ static int userfaultfd_register(struct userfaultfd_ctx *ctx,
 				unsigned long arg)
 {
 	struct mm_struct *mm = ctx->mm;
-	struct vm_area_struct *vma, *cur;
+	struct mm_area *vma, *cur;
 	int ret;
 	struct uffdio_register uffdio_register;
 	struct uffdio_register __user *user_uffdio_register;
@@ -1413,7 +1413,7 @@ static int userfaultfd_unregister(struct userfaultfd_ctx *ctx,
 				  unsigned long arg)
 {
 	struct mm_struct *mm = ctx->mm;
-	struct vm_area_struct *vma, *prev, *cur;
+	struct mm_area *vma, *prev, *cur;
 	int ret;
 	struct uffdio_range uffdio_unregister;
 	bool found;
@@ -1845,7 +1845,7 @@ static inline int userfaultfd_poison(struct userfaultfd_ctx *ctx, unsigned long
 	return ret;
 }
 
-bool userfaultfd_wp_async(struct vm_area_struct *vma)
+bool userfaultfd_wp_async(struct mm_area *vma)
 {
 	return userfaultfd_wp_async_ctx(vma->vm_userfaultfd_ctx.ctx);
 }
diff --git a/fs/vboxsf/file.c b/fs/vboxsf/file.c
index b780deb81b02..a59e5521669f 100644
--- a/fs/vboxsf/file.c
+++ b/fs/vboxsf/file.c
@@ -154,7 +154,7 @@ static int vboxsf_file_release(struct inode *inode, struct file *file)
  * Write back dirty pages now, because there may not be any suitable
  * open files later
  */
-static void vboxsf_vma_close(struct vm_area_struct *vma)
+static void vboxsf_vma_close(struct mm_area *vma)
 {
 	filemap_write_and_wait(vma->vm_file->f_mapping);
 }
@@ -165,7 +165,7 @@ static const struct vm_operations_struct vboxsf_file_vm_ops = {
 	.map_pages	= filemap_map_pages,
 };
 
-static int vboxsf_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int vboxsf_file_mmap(struct file *file, struct mm_area *vma)
 {
 	int err;
 
diff --git a/fs/xfs/xfs_file.c b/fs/xfs/xfs_file.c
index 84f08c976ac4..afe9512ae66f 100644
--- a/fs/xfs/xfs_file.c
+++ b/fs/xfs/xfs_file.c
@@ -1846,7 +1846,7 @@ static const struct vm_operations_struct xfs_file_vm_ops = {
 STATIC int
 xfs_file_mmap(
 	struct file		*file,
-	struct vm_area_struct	*vma)
+	struct mm_area	*vma)
 {
 	struct inode		*inode = file_inode(file);
 	struct xfs_buftarg	*target = xfs_inode_buftarg(XFS_I(inode));
diff --git a/fs/zonefs/file.c b/fs/zonefs/file.c
index 42e2c0065bb3..09a25e7ae36b 100644
--- a/fs/zonefs/file.c
+++ b/fs/zonefs/file.c
@@ -312,7 +312,7 @@ static const struct vm_operations_struct zonefs_file_vm_ops = {
 	.page_mkwrite	= zonefs_filemap_page_mkwrite,
 };
 
-static int zonefs_file_mmap(struct file *file, struct vm_area_struct *vma)
+static int zonefs_file_mmap(struct file *file, struct mm_area *vma)
 {
 	/*
 	 * Conventional zones accept random writes, so their files can support
diff --git a/include/asm-generic/cacheflush.h b/include/asm-generic/cacheflush.h
index 7ee8a179d103..968dcbb599df 100644
--- a/include/asm-generic/cacheflush.h
+++ b/include/asm-generic/cacheflush.h
@@ -5,7 +5,7 @@
 #include <linux/instrumented.h>
 
 struct mm_struct;
-struct vm_area_struct;
+struct mm_area;
 struct page;
 struct address_space;
 
@@ -32,7 +32,7 @@ static inline void flush_cache_dup_mm(struct mm_struct *mm)
 #endif
 
 #ifndef flush_cache_range
-static inline void flush_cache_range(struct vm_area_struct *vma,
+static inline void flush_cache_range(struct mm_area *vma,
 				     unsigned long start,
 				     unsigned long end)
 {
@@ -40,7 +40,7 @@ static inline void flush_cache_range(struct vm_area_struct *vma,
 #endif
 
 #ifndef flush_cache_page
-static inline void flush_cache_page(struct vm_area_struct *vma,
+static inline void flush_cache_page(struct mm_area *vma,
 				    unsigned long vmaddr,
 				    unsigned long pfn)
 {
@@ -78,7 +78,7 @@ static inline void flush_icache_range(unsigned long start, unsigned long end)
 #endif
 
 #ifndef flush_icache_user_page
-static inline void flush_icache_user_page(struct vm_area_struct *vma,
+static inline void flush_icache_user_page(struct mm_area *vma,
 					   struct page *page,
 					   unsigned long addr, int len)
 {
diff --git a/include/asm-generic/hugetlb.h b/include/asm-generic/hugetlb.h
index 2afc95bf1655..837360772416 100644
--- a/include/asm-generic/hugetlb.h
+++ b/include/asm-generic/hugetlb.h
@@ -97,7 +97,7 @@ static inline pte_t huge_ptep_get_and_clear(struct mm_struct *mm,
 #endif
 
 #ifndef __HAVE_ARCH_HUGE_PTEP_CLEAR_FLUSH
-static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+static inline pte_t huge_ptep_clear_flush(struct mm_area *vma,
 		unsigned long addr, pte_t *ptep)
 {
 	return ptep_clear_flush(vma, addr, ptep);
@@ -136,7 +136,7 @@ static inline void huge_ptep_set_wrprotect(struct mm_struct *mm,
 #endif
 
 #ifndef __HAVE_ARCH_HUGE_PTEP_SET_ACCESS_FLAGS
-static inline int huge_ptep_set_access_flags(struct vm_area_struct *vma,
+static inline int huge_ptep_set_access_flags(struct mm_area *vma,
 		unsigned long addr, pte_t *ptep,
 		pte_t pte, int dirty)
 {
diff --git a/include/asm-generic/mm_hooks.h b/include/asm-generic/mm_hooks.h
index 6eea3b3c1e65..58db73bbd76f 100644
--- a/include/asm-generic/mm_hooks.h
+++ b/include/asm-generic/mm_hooks.h
@@ -17,7 +17,7 @@ static inline void arch_exit_mmap(struct mm_struct *mm)
 {
 }
 
-static inline bool arch_vma_access_permitted(struct vm_area_struct *vma,
+static inline bool arch_vma_access_permitted(struct mm_area *vma,
 		bool write, bool execute, bool foreign)
 {
 	/* by default, allow everything */
diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
index 88a42973fa47..a86739bc57db 100644
--- a/include/asm-generic/tlb.h
+++ b/include/asm-generic/tlb.h
@@ -292,7 +292,7 @@ bool __tlb_remove_folio_pages(struct mmu_gather *tlb, struct page *page,
  * function, except we define it before the 'struct mmu_gather'.
  */
 #define tlb_delay_rmap(tlb) (((tlb)->delayed_rmap = 1), true)
-extern void tlb_flush_rmaps(struct mmu_gather *tlb, struct vm_area_struct *vma);
+extern void tlb_flush_rmaps(struct mmu_gather *tlb, struct mm_area *vma);
 #endif
 
 #endif
@@ -306,7 +306,7 @@ extern void tlb_flush_rmaps(struct mmu_gather *tlb, struct vm_area_struct *vma);
  */
 #ifndef tlb_delay_rmap
 #define tlb_delay_rmap(tlb) (false)
-static inline void tlb_flush_rmaps(struct mmu_gather *tlb, struct vm_area_struct *vma) { }
+static inline void tlb_flush_rmaps(struct mmu_gather *tlb, struct mm_area *vma) { }
 #endif
 
 /*
@@ -435,7 +435,7 @@ static inline void tlb_flush(struct mmu_gather *tlb)
 	if (tlb->fullmm || tlb->need_flush_all) {
 		flush_tlb_mm(tlb->mm);
 	} else if (tlb->end) {
-		struct vm_area_struct vma = {
+		struct mm_area vma = {
 			.vm_mm = tlb->mm,
 			.vm_flags = (tlb->vma_exec ? VM_EXEC    : 0) |
 				    (tlb->vma_huge ? VM_HUGETLB : 0),
@@ -449,7 +449,7 @@ static inline void tlb_flush(struct mmu_gather *tlb)
 #endif /* CONFIG_MMU_GATHER_NO_RANGE */
 
 static inline void
-tlb_update_vma_flags(struct mmu_gather *tlb, struct vm_area_struct *vma)
+tlb_update_vma_flags(struct mmu_gather *tlb, struct mm_area *vma)
 {
 	/*
 	 * flush_tlb_range() implementations that look at VM_HUGETLB (tile,
@@ -535,7 +535,7 @@ static inline unsigned long tlb_get_unmap_size(struct mmu_gather *tlb)
  * case where we're doing a full MM flush.  When we're doing a munmap,
  * the vmas are adjusted to only cover the region to be torn down.
  */
-static inline void tlb_start_vma(struct mmu_gather *tlb, struct vm_area_struct *vma)
+static inline void tlb_start_vma(struct mmu_gather *tlb, struct mm_area *vma)
 {
 	if (tlb->fullmm)
 		return;
@@ -546,7 +546,7 @@ static inline void tlb_start_vma(struct mmu_gather *tlb, struct vm_area_struct *
 #endif
 }
 
-static inline void tlb_end_vma(struct mmu_gather *tlb, struct vm_area_struct *vma)
+static inline void tlb_end_vma(struct mmu_gather *tlb, struct mm_area *vma)
 {
 	if (tlb->fullmm)
 		return;
diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h
index 2bf893eabb4b..84a5e980adee 100644
--- a/include/drm/drm_gem.h
+++ b/include/drm/drm_gem.h
@@ -186,7 +186,7 @@ struct drm_gem_object_funcs {
 	 * drm_gem_prime_mmap().  When @mmap is present @vm_ops is not
 	 * used, the @mmap callback must set vma->vm_ops instead.
 	 */
-	int (*mmap)(struct drm_gem_object *obj, struct vm_area_struct *vma);
+	int (*mmap)(struct drm_gem_object *obj, struct mm_area *vma);
 
 	/**
 	 * @evict:
@@ -482,11 +482,11 @@ int drm_gem_object_init_with_mnt(struct drm_device *dev,
 void drm_gem_private_object_init(struct drm_device *dev,
 				 struct drm_gem_object *obj, size_t size);
 void drm_gem_private_object_fini(struct drm_gem_object *obj);
-void drm_gem_vm_open(struct vm_area_struct *vma);
-void drm_gem_vm_close(struct vm_area_struct *vma);
+void drm_gem_vm_open(struct mm_area *vma);
+void drm_gem_vm_close(struct mm_area *vma);
 int drm_gem_mmap_obj(struct drm_gem_object *obj, unsigned long obj_size,
-		     struct vm_area_struct *vma);
-int drm_gem_mmap(struct file *filp, struct vm_area_struct *vma);
+		     struct mm_area *vma);
+int drm_gem_mmap(struct file *filp, struct mm_area *vma);
 
 /**
  * drm_gem_object_get - acquire a GEM buffer object reference
diff --git a/include/drm/drm_gem_dma_helper.h b/include/drm/drm_gem_dma_helper.h
index f2678e7ecb98..d097e0a46ceb 100644
--- a/include/drm/drm_gem_dma_helper.h
+++ b/include/drm/drm_gem_dma_helper.h
@@ -40,7 +40,7 @@ void drm_gem_dma_print_info(const struct drm_gem_dma_object *dma_obj,
 struct sg_table *drm_gem_dma_get_sg_table(struct drm_gem_dma_object *dma_obj);
 int drm_gem_dma_vmap(struct drm_gem_dma_object *dma_obj,
 		     struct iosys_map *map);
-int drm_gem_dma_mmap(struct drm_gem_dma_object *dma_obj, struct vm_area_struct *vma);
+int drm_gem_dma_mmap(struct drm_gem_dma_object *dma_obj, struct mm_area *vma);
 
 extern const struct vm_operations_struct drm_gem_dma_vm_ops;
 
@@ -126,7 +126,7 @@ static inline int drm_gem_dma_object_vmap(struct drm_gem_object *obj,
  * Returns:
  * 0 on success or a negative error code on failure.
  */
-static inline int drm_gem_dma_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static inline int drm_gem_dma_object_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct drm_gem_dma_object *dma_obj = to_drm_gem_dma_obj(obj);
 
diff --git a/include/drm/drm_gem_shmem_helper.h b/include/drm/drm_gem_shmem_helper.h
index cef5a6b5a4d6..3126f47424b4 100644
--- a/include/drm/drm_gem_shmem_helper.h
+++ b/include/drm/drm_gem_shmem_helper.h
@@ -109,7 +109,7 @@ int drm_gem_shmem_vmap(struct drm_gem_shmem_object *shmem,
 		       struct iosys_map *map);
 void drm_gem_shmem_vunmap(struct drm_gem_shmem_object *shmem,
 			  struct iosys_map *map);
-int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct vm_area_struct *vma);
+int drm_gem_shmem_mmap(struct drm_gem_shmem_object *shmem, struct mm_area *vma);
 
 int drm_gem_shmem_pin_locked(struct drm_gem_shmem_object *shmem);
 void drm_gem_shmem_unpin_locked(struct drm_gem_shmem_object *shmem);
@@ -259,7 +259,7 @@ static inline void drm_gem_shmem_object_vunmap(struct drm_gem_object *obj,
  * Returns:
  * 0 on success or a negative error code on failure.
  */
-static inline int drm_gem_shmem_object_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
+static inline int drm_gem_shmem_object_mmap(struct drm_gem_object *obj, struct mm_area *vma)
 {
 	struct drm_gem_shmem_object *shmem = to_drm_gem_shmem_obj(obj);
 
diff --git a/include/drm/drm_gem_ttm_helper.h b/include/drm/drm_gem_ttm_helper.h
index 7b53d673ae7e..2147aea16d62 100644
--- a/include/drm/drm_gem_ttm_helper.h
+++ b/include/drm/drm_gem_ttm_helper.h
@@ -21,7 +21,7 @@ int drm_gem_ttm_vmap(struct drm_gem_object *gem,
 void drm_gem_ttm_vunmap(struct drm_gem_object *gem,
 			struct iosys_map *map);
 int drm_gem_ttm_mmap(struct drm_gem_object *gem,
-		     struct vm_area_struct *vma);
+		     struct mm_area *vma);
 
 int drm_gem_ttm_dumb_map_offset(struct drm_file *file, struct drm_device *dev,
 				uint32_t handle, uint64_t *offset);
diff --git a/include/drm/drm_gem_vram_helper.h b/include/drm/drm_gem_vram_helper.h
index 00830b49a3ff..395692607569 100644
--- a/include/drm/drm_gem_vram_helper.h
+++ b/include/drm/drm_gem_vram_helper.h
@@ -18,7 +18,7 @@ struct drm_mode_create_dumb;
 struct drm_plane;
 struct drm_plane_state;
 struct filp;
-struct vm_area_struct;
+struct mm_area;
 
 #define DRM_GEM_VRAM_PL_FLAG_SYSTEM	(1 << 0)
 #define DRM_GEM_VRAM_PL_FLAG_VRAM	(1 << 1)
diff --git a/include/drm/drm_prime.h b/include/drm/drm_prime.h
index fa085c44d4ca..feb9e2202049 100644
--- a/include/drm/drm_prime.h
+++ b/include/drm/drm_prime.h
@@ -89,8 +89,8 @@ void drm_gem_unmap_dma_buf(struct dma_buf_attachment *attach,
 int drm_gem_dmabuf_vmap(struct dma_buf *dma_buf, struct iosys_map *map);
 void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, struct iosys_map *map);
 
-int drm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
-int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma);
+int drm_gem_prime_mmap(struct drm_gem_object *obj, struct mm_area *vma);
+int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct mm_area *vma);
 
 struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev,
 				       struct page **pages, unsigned int nr_pages);
diff --git a/include/drm/ttm/ttm_bo.h b/include/drm/ttm/ttm_bo.h
index 903cd1030110..cbfc05424ea7 100644
--- a/include/drm/ttm/ttm_bo.h
+++ b/include/drm/ttm/ttm_bo.h
@@ -433,7 +433,7 @@ int ttm_bo_kmap(struct ttm_buffer_object *bo, unsigned long start_page,
 void ttm_bo_kunmap(struct ttm_bo_kmap_obj *map);
 int ttm_bo_vmap(struct ttm_buffer_object *bo, struct iosys_map *map);
 void ttm_bo_vunmap(struct ttm_buffer_object *bo, struct iosys_map *map);
-int ttm_bo_mmap_obj(struct vm_area_struct *vma, struct ttm_buffer_object *bo);
+int ttm_bo_mmap_obj(struct mm_area *vma, struct ttm_buffer_object *bo);
 s64 ttm_bo_swapout(struct ttm_device *bdev, struct ttm_operation_ctx *ctx,
 		   struct ttm_resource_manager *man, gfp_t gfp_flags,
 		   s64 target);
@@ -450,9 +450,9 @@ vm_fault_t ttm_bo_vm_fault_reserved(struct vm_fault *vmf,
 				    pgprot_t prot,
 				    pgoff_t num_prefault);
 vm_fault_t ttm_bo_vm_fault(struct vm_fault *vmf);
-void ttm_bo_vm_open(struct vm_area_struct *vma);
-void ttm_bo_vm_close(struct vm_area_struct *vma);
-int ttm_bo_vm_access(struct vm_area_struct *vma, unsigned long addr,
+void ttm_bo_vm_open(struct mm_area *vma);
+void ttm_bo_vm_close(struct mm_area *vma);
+int ttm_bo_vm_access(struct mm_area *vma, unsigned long addr,
 		     void *buf, int len, int write);
 vm_fault_t ttm_bo_vm_dummy_page(struct vm_fault *vmf, pgprot_t prot);
 
diff --git a/include/linux/backing-file.h b/include/linux/backing-file.h
index 1476a6ed1bfd..ec845c283a65 100644
--- a/include/linux/backing-file.h
+++ b/include/linux/backing-file.h
@@ -38,7 +38,7 @@ ssize_t backing_file_splice_write(struct pipe_inode_info *pipe,
 				  struct file *out, struct kiocb *iocb,
 				  size_t len, unsigned int flags,
 				  struct backing_file_ctx *ctx);
-int backing_file_mmap(struct file *file, struct vm_area_struct *vma,
+int backing_file_mmap(struct file *file, struct mm_area *vma,
 		      struct backing_file_ctx *ctx);
 
 #endif /* _LINUX_BACKING_FILE_H */
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
index 1625c8529e70..bf4593304fe5 100644
--- a/include/linux/binfmts.h
+++ b/include/linux/binfmts.h
@@ -17,7 +17,7 @@ struct coredump_params;
  */
 struct linux_binprm {
 #ifdef CONFIG_MMU
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long vma_pages;
 	unsigned long argmin; /* rlimit marker for copy_strings() */
 #else
diff --git a/include/linux/bpf.h b/include/linux/bpf.h
index 3f0cc89c0622..1a62e5398dfd 100644
--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -138,7 +138,7 @@ struct bpf_map_ops {
 				     u64 *imm, u32 off);
 	int (*map_direct_value_meta)(const struct bpf_map *map,
 				     u64 imm, u32 *off);
-	int (*map_mmap)(struct bpf_map *map, struct vm_area_struct *vma);
+	int (*map_mmap)(struct bpf_map *map, struct mm_area *vma);
 	__poll_t (*map_poll)(struct bpf_map *map, struct file *filp,
 			     struct poll_table_struct *pts);
 	unsigned long (*map_get_unmapped_area)(struct file *filep, unsigned long addr,
diff --git a/include/linux/btf_ids.h b/include/linux/btf_ids.h
index 139bdececdcf..3a040583a4b2 100644
--- a/include/linux/btf_ids.h
+++ b/include/linux/btf_ids.h
@@ -270,7 +270,7 @@ extern u32 btf_sock_ids[];
 #define BTF_TRACING_TYPE_xxx	\
 	BTF_TRACING_TYPE(BTF_TRACING_TYPE_TASK, task_struct)	\
 	BTF_TRACING_TYPE(BTF_TRACING_TYPE_FILE, file)		\
-	BTF_TRACING_TYPE(BTF_TRACING_TYPE_VMA, vm_area_struct)
+	BTF_TRACING_TYPE(BTF_TRACING_TYPE_VMA, mm_area)
 
 enum {
 #define BTF_TRACING_TYPE(name, type) name,
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
index f0a4ad7839b6..3b16880622f2 100644
--- a/include/linux/buffer_head.h
+++ b/include/linux/buffer_head.h
@@ -271,7 +271,7 @@ int cont_write_begin(struct file *, struct address_space *, loff_t,
 			get_block_t *, loff_t *);
 int generic_cont_expand_simple(struct inode *inode, loff_t size);
 void block_commit_write(struct folio *folio, size_t from, size_t to);
-int block_page_mkwrite(struct vm_area_struct *vma, struct vm_fault *vmf,
+int block_page_mkwrite(struct mm_area *vma, struct vm_fault *vmf,
 				get_block_t get_block);
 sector_t generic_block_bmap(struct address_space *, sector_t, get_block_t *);
 int block_truncate_page(struct address_space *, loff_t, get_block_t *);
diff --git a/include/linux/buildid.h b/include/linux/buildid.h
index 014a88c41073..ccb20bbf6a32 100644
--- a/include/linux/buildid.h
+++ b/include/linux/buildid.h
@@ -6,9 +6,9 @@
 
 #define BUILD_ID_SIZE_MAX 20
 
-struct vm_area_struct;
-int build_id_parse(struct vm_area_struct *vma, unsigned char *build_id, __u32 *size);
-int build_id_parse_nofault(struct vm_area_struct *vma, unsigned char *build_id, __u32 *size);
+struct mm_area;
+int build_id_parse(struct mm_area *vma, unsigned char *build_id, __u32 *size);
+int build_id_parse_nofault(struct mm_area *vma, unsigned char *build_id, __u32 *size);
 int build_id_parse_buf(const void *buf, unsigned char *build_id, u32 buf_size);
 
 #if IS_ENABLED(CONFIG_STACKTRACE_BUILD_ID) || IS_ENABLED(CONFIG_VMCORE_INFO)
diff --git a/include/linux/cacheflush.h b/include/linux/cacheflush.h
index 55f297b2c23f..81e334b23709 100644
--- a/include/linux/cacheflush.h
+++ b/include/linux/cacheflush.h
@@ -18,7 +18,7 @@ static inline void flush_dcache_folio(struct folio *folio)
 #endif /* ARCH_IMPLEMENTS_FLUSH_DCACHE_PAGE */
 
 #ifndef flush_icache_pages
-static inline void flush_icache_pages(struct vm_area_struct *vma,
+static inline void flush_icache_pages(struct mm_area *vma,
 				     struct page *page, unsigned int nr)
 {
 }
diff --git a/include/linux/configfs.h b/include/linux/configfs.h
index c771e9d0d0b9..2fc8bc945f7c 100644
--- a/include/linux/configfs.h
+++ b/include/linux/configfs.h
@@ -146,7 +146,7 @@ static struct configfs_attribute _pfx##attr_##_name = {	\
 }
 
 struct file;
-struct vm_area_struct;
+struct mm_area;
 
 struct configfs_bin_attribute {
 	struct configfs_attribute cb_attr;	/* std. attribute */
diff --git a/include/linux/crash_dump.h b/include/linux/crash_dump.h
index 2f2555e6407c..28c31aa4abf3 100644
--- a/include/linux/crash_dump.h
+++ b/include/linux/crash_dump.h
@@ -22,7 +22,7 @@ extern ssize_t elfcorehdr_read(char *buf, size_t count, u64 *ppos);
 extern ssize_t elfcorehdr_read_notes(char *buf, size_t count, u64 *ppos);
 void elfcorehdr_fill_device_ram_ptload_elf64(Elf64_Phdr *phdr,
 		unsigned long long paddr, unsigned long long size);
-extern int remap_oldmem_pfn_range(struct vm_area_struct *vma,
+extern int remap_oldmem_pfn_range(struct mm_area *vma,
 				  unsigned long from, unsigned long pfn,
 				  unsigned long size, pgprot_t prot);
 
diff --git a/include/linux/dax.h b/include/linux/dax.h
index dcc9fcdf14e4..92e61f46d8b2 100644
--- a/include/linux/dax.h
+++ b/include/linux/dax.h
@@ -65,7 +65,7 @@ size_t dax_recovery_write(struct dax_device *dax_dev, pgoff_t pgoff,
 /*
  * Check if given mapping is supported by the file / underlying device.
  */
-static inline bool daxdev_mapping_supported(struct vm_area_struct *vma,
+static inline bool daxdev_mapping_supported(struct mm_area *vma,
 					     struct dax_device *dax_dev)
 {
 	if (!(vma->vm_flags & VM_SYNC))
@@ -110,7 +110,7 @@ static inline void set_dax_nomc(struct dax_device *dax_dev)
 static inline void set_dax_synchronous(struct dax_device *dax_dev)
 {
 }
-static inline bool daxdev_mapping_supported(struct vm_area_struct *vma,
+static inline bool daxdev_mapping_supported(struct mm_area *vma,
 				struct dax_device *dax_dev)
 {
 	return !(vma->vm_flags & VM_SYNC);
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h
index 36216d28d8bd..8aa15c4fd02f 100644
--- a/include/linux/dma-buf.h
+++ b/include/linux/dma-buf.h
@@ -281,7 +281,7 @@ struct dma_buf_ops {
 	 *
 	 * 0 on success or a negative error code on failure.
 	 */
-	int (*mmap)(struct dma_buf *, struct vm_area_struct *vma);
+	int (*mmap)(struct dma_buf *, struct mm_area *vma);
 
 	int (*vmap)(struct dma_buf *dmabuf, struct iosys_map *map);
 	void (*vunmap)(struct dma_buf *dmabuf, struct iosys_map *map);
@@ -630,7 +630,7 @@ void dma_buf_unmap_attachment_unlocked(struct dma_buf_attachment *attach,
 				       struct sg_table *sg_table,
 				       enum dma_data_direction direction);
 
-int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *,
+int dma_buf_mmap(struct dma_buf *, struct mm_area *,
 		 unsigned long);
 int dma_buf_vmap(struct dma_buf *dmabuf, struct iosys_map *map);
 void dma_buf_vunmap(struct dma_buf *dmabuf, struct iosys_map *map);
diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h
index e172522cd936..c6bdde002279 100644
--- a/include/linux/dma-map-ops.h
+++ b/include/linux/dma-map-ops.h
@@ -24,7 +24,7 @@ struct dma_map_ops {
 			gfp_t gfp);
 	void (*free_pages)(struct device *dev, size_t size, struct page *vaddr,
 			dma_addr_t dma_handle, enum dma_data_direction dir);
-	int (*mmap)(struct device *, struct vm_area_struct *,
+	int (*mmap)(struct device *, struct mm_area *,
 			void *, dma_addr_t, size_t, unsigned long attrs);
 
 	int (*get_sgtable)(struct device *dev, struct sg_table *sgt,
@@ -162,7 +162,7 @@ void dma_release_coherent_memory(struct device *dev);
 int dma_alloc_from_dev_coherent(struct device *dev, ssize_t size,
 		dma_addr_t *dma_handle, void **ret);
 int dma_release_from_dev_coherent(struct device *dev, int order, void *vaddr);
-int dma_mmap_from_dev_coherent(struct device *dev, struct vm_area_struct *vma,
+int dma_mmap_from_dev_coherent(struct device *dev, struct mm_area *vma,
 		void *cpu_addr, size_t size, int *ret);
 #else
 static inline int dma_declare_coherent_memory(struct device *dev,
@@ -181,7 +181,7 @@ static inline void dma_release_coherent_memory(struct device *dev) { }
 void *dma_alloc_from_global_coherent(struct device *dev, ssize_t size,
 		dma_addr_t *dma_handle);
 int dma_release_from_global_coherent(int order, void *vaddr);
-int dma_mmap_from_global_coherent(struct vm_area_struct *vma, void *cpu_addr,
+int dma_mmap_from_global_coherent(struct mm_area *vma, void *cpu_addr,
 		size_t size, int *ret);
 int dma_init_global_coherent(phys_addr_t phys_addr, size_t size);
 #else
@@ -194,7 +194,7 @@ static inline int dma_release_from_global_coherent(int order, void *vaddr)
 {
 	return 0;
 }
-static inline int dma_mmap_from_global_coherent(struct vm_area_struct *vma,
+static inline int dma_mmap_from_global_coherent(struct mm_area *vma,
 		void *cpu_addr, size_t size, int *ret)
 {
 	return 0;
@@ -204,7 +204,7 @@ static inline int dma_mmap_from_global_coherent(struct vm_area_struct *vma,
 int dma_common_get_sgtable(struct device *dev, struct sg_table *sgt,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs);
-int dma_common_mmap(struct device *dev, struct vm_area_struct *vma,
+int dma_common_mmap(struct device *dev, struct mm_area *vma,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs);
 struct page *dma_common_alloc_pages(struct device *dev, size_t size,
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index b79925b1c433..06e43bf6536d 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -124,7 +124,7 @@ void dmam_free_coherent(struct device *dev, size_t size, void *vaddr,
 int dma_get_sgtable_attrs(struct device *dev, struct sg_table *sgt,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs);
-int dma_mmap_attrs(struct device *dev, struct vm_area_struct *vma,
+int dma_mmap_attrs(struct device *dev, struct mm_area *vma,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs);
 bool dma_can_mmap(struct device *dev);
@@ -143,7 +143,7 @@ void dma_free_noncontiguous(struct device *dev, size_t size,
 void *dma_vmap_noncontiguous(struct device *dev, size_t size,
 		struct sg_table *sgt);
 void dma_vunmap_noncontiguous(struct device *dev, void *vaddr);
-int dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
+int dma_mmap_noncontiguous(struct device *dev, struct mm_area *vma,
 		size_t size, struct sg_table *sgt);
 #else /* CONFIG_HAS_DMA */
 static inline dma_addr_t dma_map_page_attrs(struct device *dev,
@@ -210,7 +210,7 @@ static inline int dma_get_sgtable_attrs(struct device *dev,
 {
 	return -ENXIO;
 }
-static inline int dma_mmap_attrs(struct device *dev, struct vm_area_struct *vma,
+static inline int dma_mmap_attrs(struct device *dev, struct mm_area *vma,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs)
 {
@@ -271,7 +271,7 @@ static inline void dma_vunmap_noncontiguous(struct device *dev, void *vaddr)
 {
 }
 static inline int dma_mmap_noncontiguous(struct device *dev,
-		struct vm_area_struct *vma, size_t size, struct sg_table *sgt)
+		struct mm_area *vma, size_t size, struct sg_table *sgt)
 {
 	return -EINVAL;
 }
@@ -357,7 +357,7 @@ struct page *dma_alloc_pages(struct device *dev, size_t size,
 		dma_addr_t *dma_handle, enum dma_data_direction dir, gfp_t gfp);
 void dma_free_pages(struct device *dev, size_t size, struct page *page,
 		dma_addr_t dma_handle, enum dma_data_direction dir);
-int dma_mmap_pages(struct device *dev, struct vm_area_struct *vma,
+int dma_mmap_pages(struct device *dev, struct mm_area *vma,
 		size_t size, struct page *page);
 
 static inline void *dma_alloc_noncoherent(struct device *dev, size_t size,
@@ -611,7 +611,7 @@ static inline void dma_free_wc(struct device *dev, size_t size,
 }
 
 static inline int dma_mmap_wc(struct device *dev,
-			      struct vm_area_struct *vma,
+			      struct mm_area *vma,
 			      void *cpu_addr, dma_addr_t dma_addr,
 			      size_t size)
 {
diff --git a/include/linux/fb.h b/include/linux/fb.h
index cd653862ab99..f09a1e5e46a0 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -26,7 +26,7 @@ struct module;
 struct notifier_block;
 struct page;
 struct videomode;
-struct vm_area_struct;
+struct mm_area;
 
 /* Definitions below are used in the parsed monitor specs */
 #define FB_DPMS_ACTIVE_OFF	1
@@ -302,7 +302,7 @@ struct fb_ops {
 			unsigned long arg);
 
 	/* perform fb specific mmap */
-	int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma);
+	int (*fb_mmap)(struct fb_info *info, struct mm_area *vma);
 
 	/* get capability given var */
 	void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps,
@@ -555,7 +555,7 @@ extern ssize_t fb_io_read(struct fb_info *info, char __user *buf,
 			  size_t count, loff_t *ppos);
 extern ssize_t fb_io_write(struct fb_info *info, const char __user *buf,
 			   size_t count, loff_t *ppos);
-int fb_io_mmap(struct fb_info *info, struct vm_area_struct *vma);
+int fb_io_mmap(struct fb_info *info, struct mm_area *vma);
 
 #define __FB_DEFAULT_IOMEM_OPS_RDWR \
 	.fb_read	= fb_io_read, \
@@ -648,7 +648,7 @@ static inline void __fb_pad_aligned_buffer(u8 *dst, u32 d_pitch,
 }
 
 /* fb_defio.c */
-int fb_deferred_io_mmap(struct fb_info *info, struct vm_area_struct *vma);
+int fb_deferred_io_mmap(struct fb_info *info, struct mm_area *vma);
 extern int  fb_deferred_io_init(struct fb_info *info);
 extern void fb_deferred_io_open(struct fb_info *info,
 				struct inode *inode,
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 016b0fe1536e..2be4d710cdad 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -65,7 +65,7 @@ struct kobject;
 struct pipe_inode_info;
 struct poll_table_struct;
 struct kstatfs;
-struct vm_area_struct;
+struct mm_area;
 struct vfsmount;
 struct cred;
 struct swap_info_struct;
@@ -2140,7 +2140,7 @@ struct file_operations {
 	__poll_t (*poll) (struct file *, struct poll_table_struct *);
 	long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
 	long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
-	int (*mmap) (struct file *, struct vm_area_struct *);
+	int (*mmap) (struct file *, struct mm_area *);
 	int (*open) (struct inode *, struct file *);
 	int (*flush) (struct file *, fl_owner_t id);
 	int (*release) (struct inode *, struct file *);
@@ -2238,7 +2238,7 @@ struct inode_operations {
 	struct offset_ctx *(*get_offset_ctx)(struct inode *inode);
 } ____cacheline_aligned;
 
-static inline int call_mmap(struct file *file, struct vm_area_struct *vma)
+static inline int call_mmap(struct file *file, struct mm_area *vma)
 {
 	return file->f_op->mmap(file, vma);
 }
@@ -3341,8 +3341,8 @@ extern void inode_add_lru(struct inode *inode);
 extern int sb_set_blocksize(struct super_block *, int);
 extern int sb_min_blocksize(struct super_block *, int);
 
-extern int generic_file_mmap(struct file *, struct vm_area_struct *);
-extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *);
+extern int generic_file_mmap(struct file *, struct mm_area *);
+extern int generic_file_readonly_mmap(struct file *, struct mm_area *);
 extern ssize_t generic_write_checks(struct kiocb *, struct iov_iter *);
 int generic_write_checks_count(struct kiocb *iocb, loff_t *count);
 extern int generic_write_check_limits(struct file *file, loff_t pos,
@@ -3666,12 +3666,12 @@ void setattr_copy(struct mnt_idmap *, struct inode *inode,
 
 extern int file_update_time(struct file *file);
 
-static inline bool vma_is_dax(const struct vm_area_struct *vma)
+static inline bool vma_is_dax(const struct mm_area *vma)
 {
 	return vma->vm_file && IS_DAX(vma->vm_file->f_mapping->host);
 }
 
-static inline bool vma_is_fsdax(struct vm_area_struct *vma)
+static inline bool vma_is_fsdax(struct mm_area *vma)
 {
 	struct inode *inode;
 
diff --git a/include/linux/gfp.h b/include/linux/gfp.h
index c9fa6309c903..1198056004c8 100644
--- a/include/linux/gfp.h
+++ b/include/linux/gfp.h
@@ -9,7 +9,7 @@
 #include <linux/alloc_tag.h>
 #include <linux/sched.h>
 
-struct vm_area_struct;
+struct mm_area;
 struct mempolicy;
 
 /* Convert GFP flags to their corresponding migrate type */
@@ -318,7 +318,7 @@ struct page *alloc_pages_noprof(gfp_t gfp, unsigned int order);
 struct folio *folio_alloc_noprof(gfp_t gfp, unsigned int order);
 struct folio *folio_alloc_mpol_noprof(gfp_t gfp, unsigned int order,
 		struct mempolicy *mpol, pgoff_t ilx, int nid);
-struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, struct vm_area_struct *vma,
+struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, struct mm_area *vma,
 		unsigned long addr);
 #else
 static inline struct page *alloc_pages_noprof(gfp_t gfp_mask, unsigned int order)
@@ -346,7 +346,7 @@ static inline struct folio *folio_alloc_mpol_noprof(gfp_t gfp, unsigned int orde
 #define alloc_page(gfp_mask) alloc_pages(gfp_mask, 0)
 
 static inline struct page *alloc_page_vma_noprof(gfp_t gfp,
-		struct vm_area_struct *vma, unsigned long addr)
+		struct mm_area *vma, unsigned long addr)
 {
 	struct folio *folio = vma_alloc_folio_noprof(gfp, 0, vma, addr);
 
@@ -420,7 +420,7 @@ static inline bool gfp_compaction_allowed(gfp_t gfp_mask)
 	return IS_ENABLED(CONFIG_COMPACTION) && (gfp_mask & __GFP_IO);
 }
 
-extern gfp_t vma_thp_gfp_mask(struct vm_area_struct *vma);
+extern gfp_t vma_thp_gfp_mask(struct mm_area *vma);
 
 #ifdef CONFIG_CONTIG_ALLOC
 /* The below functions must be run on a range from a single zone. */
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index 5c6bea81a90e..76601fc06fab 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -183,7 +183,7 @@ static inline unsigned long nr_free_highpages(void);
 static inline unsigned long totalhigh_pages(void);
 
 #ifndef ARCH_HAS_FLUSH_ANON_PAGE
-static inline void flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long vmaddr)
+static inline void flush_anon_page(struct mm_area *vma, struct page *page, unsigned long vmaddr)
 {
 }
 #endif
@@ -221,7 +221,7 @@ static inline void clear_user_highpage(struct page *page, unsigned long vaddr)
  * we are out of memory.
  */
 static inline
-struct folio *vma_alloc_zeroed_movable_folio(struct vm_area_struct *vma,
+struct folio *vma_alloc_zeroed_movable_folio(struct mm_area *vma,
 				   unsigned long vaddr)
 {
 	struct folio *folio;
@@ -301,7 +301,7 @@ static inline void zero_user(struct page *page,
 #ifndef __HAVE_ARCH_COPY_USER_HIGHPAGE
 
 static inline void copy_user_highpage(struct page *to, struct page *from,
-	unsigned long vaddr, struct vm_area_struct *vma)
+	unsigned long vaddr, struct mm_area *vma)
 {
 	char *vfrom, *vto;
 
@@ -339,7 +339,7 @@ static inline void copy_highpage(struct page *to, struct page *from)
  * of bytes not copied if there was a #MC, otherwise 0 for success.
  */
 static inline int copy_mc_user_highpage(struct page *to, struct page *from,
-					unsigned long vaddr, struct vm_area_struct *vma)
+					unsigned long vaddr, struct mm_area *vma)
 {
 	unsigned long ret;
 	char *vfrom, *vto;
@@ -378,7 +378,7 @@ static inline int copy_mc_highpage(struct page *to, struct page *from)
 }
 #else
 static inline int copy_mc_user_highpage(struct page *to, struct page *from,
-					unsigned long vaddr, struct vm_area_struct *vma)
+					unsigned long vaddr, struct mm_area *vma)
 {
 	copy_user_highpage(to, from, vaddr, vma);
 	return 0;
diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h
index e893d546a49f..b8c548e672b0 100644
--- a/include/linux/huge_mm.h
+++ b/include/linux/huge_mm.h
@@ -10,11 +10,11 @@
 vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf);
 int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 		  pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
-		  struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma);
+		  struct mm_area *dst_vma, struct mm_area *src_vma);
 void huge_pmd_set_accessed(struct vm_fault *vmf);
 int copy_huge_pud(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 		  pud_t *dst_pud, pud_t *src_pud, unsigned long addr,
-		  struct vm_area_struct *vma);
+		  struct mm_area *vma);
 
 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
 void huge_pud_set_accessed(struct vm_fault *vmf, pud_t orig_pud);
@@ -25,15 +25,15 @@ static inline void huge_pud_set_accessed(struct vm_fault *vmf, pud_t orig_pud)
 #endif
 
 vm_fault_t do_huge_pmd_wp_page(struct vm_fault *vmf);
-bool madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
+bool madvise_free_huge_pmd(struct mmu_gather *tlb, struct mm_area *vma,
 			   pmd_t *pmd, unsigned long addr, unsigned long next);
-int zap_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma, pmd_t *pmd,
+int zap_huge_pmd(struct mmu_gather *tlb, struct mm_area *vma, pmd_t *pmd,
 		 unsigned long addr);
-int zap_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma, pud_t *pud,
+int zap_huge_pud(struct mmu_gather *tlb, struct mm_area *vma, pud_t *pud,
 		 unsigned long addr);
-bool move_huge_pmd(struct vm_area_struct *vma, unsigned long old_addr,
+bool move_huge_pmd(struct mm_area *vma, unsigned long old_addr,
 		   unsigned long new_addr, pmd_t *old_pmd, pmd_t *new_pmd);
-int change_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
+int change_huge_pmd(struct mmu_gather *tlb, struct mm_area *vma,
 		    pmd_t *pmd, unsigned long addr, pgprot_t newprot,
 		    unsigned long cp_flags);
 
@@ -212,7 +212,7 @@ static inline int next_order(unsigned long *orders, int prev)
  *   - For all vmas, check if the haddr is in an aligned hugepage
  *     area.
  */
-static inline bool thp_vma_suitable_order(struct vm_area_struct *vma,
+static inline bool thp_vma_suitable_order(struct mm_area *vma,
 		unsigned long addr, int order)
 {
 	unsigned long hpage_size = PAGE_SIZE << order;
@@ -237,7 +237,7 @@ static inline bool thp_vma_suitable_order(struct vm_area_struct *vma,
  * See thp_vma_suitable_order().
  * All orders that pass the checks are returned as a bitfield.
  */
-static inline unsigned long thp_vma_suitable_orders(struct vm_area_struct *vma,
+static inline unsigned long thp_vma_suitable_orders(struct mm_area *vma,
 		unsigned long addr, unsigned long orders)
 {
 	int order;
@@ -260,7 +260,7 @@ static inline unsigned long thp_vma_suitable_orders(struct vm_area_struct *vma,
 	return orders;
 }
 
-unsigned long __thp_vma_allowable_orders(struct vm_area_struct *vma,
+unsigned long __thp_vma_allowable_orders(struct mm_area *vma,
 					 unsigned long vm_flags,
 					 unsigned long tva_flags,
 					 unsigned long orders);
@@ -281,7 +281,7 @@ unsigned long __thp_vma_allowable_orders(struct vm_area_struct *vma,
  * orders are allowed.
  */
 static inline
-unsigned long thp_vma_allowable_orders(struct vm_area_struct *vma,
+unsigned long thp_vma_allowable_orders(struct mm_area *vma,
 				       unsigned long vm_flags,
 				       unsigned long tva_flags,
 				       unsigned long orders)
@@ -316,7 +316,7 @@ struct thpsize {
 	(transparent_hugepage_flags &					\
 	 (1<<TRANSPARENT_HUGEPAGE_USE_ZERO_PAGE_FLAG))
 
-static inline bool vma_thp_disabled(struct vm_area_struct *vma,
+static inline bool vma_thp_disabled(struct mm_area *vma,
 		unsigned long vm_flags)
 {
 	/*
@@ -394,7 +394,7 @@ static inline int split_huge_page(struct page *page)
 }
 void deferred_split_folio(struct folio *folio, bool partially_mapped);
 
-void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
+void __split_huge_pmd(struct mm_area *vma, pmd_t *pmd,
 		unsigned long address, bool freeze, struct folio *folio);
 
 #define split_huge_pmd(__vma, __pmd, __address)				\
@@ -407,19 +407,19 @@ void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
 	}  while (0)
 
 
-void split_huge_pmd_address(struct vm_area_struct *vma, unsigned long address,
+void split_huge_pmd_address(struct mm_area *vma, unsigned long address,
 		bool freeze, struct folio *folio);
 
-void __split_huge_pud(struct vm_area_struct *vma, pud_t *pud,
+void __split_huge_pud(struct mm_area *vma, pud_t *pud,
 		unsigned long address);
 
 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
-int change_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma,
+int change_huge_pud(struct mmu_gather *tlb, struct mm_area *vma,
 		    pud_t *pudp, unsigned long addr, pgprot_t newprot,
 		    unsigned long cp_flags);
 #else
 static inline int
-change_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma,
+change_huge_pud(struct mmu_gather *tlb, struct mm_area *vma,
 		pud_t *pudp, unsigned long addr, pgprot_t newprot,
 		unsigned long cp_flags) { return 0; }
 #endif
@@ -432,15 +432,15 @@ change_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma,
 			__split_huge_pud(__vma, __pud, __address);	\
 	}  while (0)
 
-int hugepage_madvise(struct vm_area_struct *vma, unsigned long *vm_flags,
+int hugepage_madvise(struct mm_area *vma, unsigned long *vm_flags,
 		     int advice);
-int madvise_collapse(struct vm_area_struct *vma,
-		     struct vm_area_struct **prev,
+int madvise_collapse(struct mm_area *vma,
+		     struct mm_area **prev,
 		     unsigned long start, unsigned long end);
-void vma_adjust_trans_huge(struct vm_area_struct *vma, unsigned long start,
-			   unsigned long end, struct vm_area_struct *next);
-spinlock_t *__pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma);
-spinlock_t *__pud_trans_huge_lock(pud_t *pud, struct vm_area_struct *vma);
+void vma_adjust_trans_huge(struct mm_area *vma, unsigned long start,
+			   unsigned long end, struct mm_area *next);
+spinlock_t *__pmd_trans_huge_lock(pmd_t *pmd, struct mm_area *vma);
+spinlock_t *__pud_trans_huge_lock(pud_t *pud, struct mm_area *vma);
 
 static inline int is_swap_pmd(pmd_t pmd)
 {
@@ -449,7 +449,7 @@ static inline int is_swap_pmd(pmd_t pmd)
 
 /* mmap_lock must be held on entry */
 static inline spinlock_t *pmd_trans_huge_lock(pmd_t *pmd,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	if (is_swap_pmd(*pmd) || pmd_trans_huge(*pmd) || pmd_devmap(*pmd))
 		return __pmd_trans_huge_lock(pmd, vma);
@@ -457,7 +457,7 @@ static inline spinlock_t *pmd_trans_huge_lock(pmd_t *pmd,
 		return NULL;
 }
 static inline spinlock_t *pud_trans_huge_lock(pud_t *pud,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	if (pud_trans_huge(*pud) || pud_devmap(*pud))
 		return __pud_trans_huge_lock(pud, vma);
@@ -474,7 +474,7 @@ static inline bool folio_test_pmd_mappable(struct folio *folio)
 	return folio_order(folio) >= HPAGE_PMD_ORDER;
 }
 
-struct page *follow_devmap_pmd(struct vm_area_struct *vma, unsigned long addr,
+struct page *follow_devmap_pmd(struct mm_area *vma, unsigned long addr,
 		pmd_t *pmd, int flags, struct dev_pagemap **pgmap);
 
 vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf);
@@ -502,9 +502,9 @@ static inline bool thp_migration_supported(void)
 	return IS_ENABLED(CONFIG_ARCH_ENABLE_THP_MIGRATION);
 }
 
-void split_huge_pmd_locked(struct vm_area_struct *vma, unsigned long address,
+void split_huge_pmd_locked(struct mm_area *vma, unsigned long address,
 			   pmd_t *pmd, bool freeze, struct folio *folio);
-bool unmap_huge_pmd_locked(struct vm_area_struct *vma, unsigned long addr,
+bool unmap_huge_pmd_locked(struct mm_area *vma, unsigned long addr,
 			   pmd_t *pmdp, struct folio *folio);
 
 #else /* CONFIG_TRANSPARENT_HUGEPAGE */
@@ -514,19 +514,19 @@ static inline bool folio_test_pmd_mappable(struct folio *folio)
 	return false;
 }
 
-static inline bool thp_vma_suitable_order(struct vm_area_struct *vma,
+static inline bool thp_vma_suitable_order(struct mm_area *vma,
 		unsigned long addr, int order)
 {
 	return false;
 }
 
-static inline unsigned long thp_vma_suitable_orders(struct vm_area_struct *vma,
+static inline unsigned long thp_vma_suitable_orders(struct mm_area *vma,
 		unsigned long addr, unsigned long orders)
 {
 	return 0;
 }
 
-static inline unsigned long thp_vma_allowable_orders(struct vm_area_struct *vma,
+static inline unsigned long thp_vma_allowable_orders(struct mm_area *vma,
 					unsigned long vm_flags,
 					unsigned long tva_flags,
 					unsigned long orders)
@@ -577,15 +577,15 @@ static inline void deferred_split_folio(struct folio *folio, bool partially_mapp
 #define split_huge_pmd(__vma, __pmd, __address)	\
 	do { } while (0)
 
-static inline void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
+static inline void __split_huge_pmd(struct mm_area *vma, pmd_t *pmd,
 		unsigned long address, bool freeze, struct folio *folio) {}
-static inline void split_huge_pmd_address(struct vm_area_struct *vma,
+static inline void split_huge_pmd_address(struct mm_area *vma,
 		unsigned long address, bool freeze, struct folio *folio) {}
-static inline void split_huge_pmd_locked(struct vm_area_struct *vma,
+static inline void split_huge_pmd_locked(struct mm_area *vma,
 					 unsigned long address, pmd_t *pmd,
 					 bool freeze, struct folio *folio) {}
 
-static inline bool unmap_huge_pmd_locked(struct vm_area_struct *vma,
+static inline bool unmap_huge_pmd_locked(struct mm_area *vma,
 					 unsigned long addr, pmd_t *pmdp,
 					 struct folio *folio)
 {
@@ -595,23 +595,23 @@ static inline bool unmap_huge_pmd_locked(struct vm_area_struct *vma,
 #define split_huge_pud(__vma, __pmd, __address)	\
 	do { } while (0)
 
-static inline int hugepage_madvise(struct vm_area_struct *vma,
+static inline int hugepage_madvise(struct mm_area *vma,
 				   unsigned long *vm_flags, int advice)
 {
 	return -EINVAL;
 }
 
-static inline int madvise_collapse(struct vm_area_struct *vma,
-				   struct vm_area_struct **prev,
+static inline int madvise_collapse(struct mm_area *vma,
+				   struct mm_area **prev,
 				   unsigned long start, unsigned long end)
 {
 	return -EINVAL;
 }
 
-static inline void vma_adjust_trans_huge(struct vm_area_struct *vma,
+static inline void vma_adjust_trans_huge(struct mm_area *vma,
 					 unsigned long start,
 					 unsigned long end,
-					 struct vm_area_struct *next)
+					 struct mm_area *next)
 {
 }
 static inline int is_swap_pmd(pmd_t pmd)
@@ -619,12 +619,12 @@ static inline int is_swap_pmd(pmd_t pmd)
 	return 0;
 }
 static inline spinlock_t *pmd_trans_huge_lock(pmd_t *pmd,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	return NULL;
 }
 static inline spinlock_t *pud_trans_huge_lock(pud_t *pud,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	return NULL;
 }
@@ -649,7 +649,7 @@ static inline void mm_put_huge_zero_folio(struct mm_struct *mm)
 	return;
 }
 
-static inline struct page *follow_devmap_pmd(struct vm_area_struct *vma,
+static inline struct page *follow_devmap_pmd(struct mm_area *vma,
 	unsigned long addr, pmd_t *pmd, int flags, struct dev_pagemap **pgmap)
 {
 	return NULL;
@@ -670,13 +670,13 @@ static inline int next_order(unsigned long *orders, int prev)
 	return 0;
 }
 
-static inline void __split_huge_pud(struct vm_area_struct *vma, pud_t *pud,
+static inline void __split_huge_pud(struct mm_area *vma, pud_t *pud,
 				    unsigned long address)
 {
 }
 
 static inline int change_huge_pud(struct mmu_gather *tlb,
-				  struct vm_area_struct *vma, pud_t *pudp,
+				  struct mm_area *vma, pud_t *pudp,
 				  unsigned long addr, pgprot_t newprot,
 				  unsigned long cp_flags)
 {
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h
index 8f3ac832ee7f..96d446761d94 100644
--- a/include/linux/hugetlb.h
+++ b/include/linux/hugetlb.h
@@ -104,7 +104,7 @@ struct file_region {
 struct hugetlb_vma_lock {
 	struct kref refs;
 	struct rw_semaphore rw_sema;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 };
 
 extern struct resv_map *resv_map_alloc(void);
@@ -119,37 +119,37 @@ struct hugepage_subpool *hugepage_new_subpool(struct hstate *h, long max_hpages,
 						long min_hpages);
 void hugepage_put_subpool(struct hugepage_subpool *spool);
 
-void hugetlb_dup_vma_private(struct vm_area_struct *vma);
-void clear_vma_resv_huge_pages(struct vm_area_struct *vma);
-int move_hugetlb_page_tables(struct vm_area_struct *vma,
-			     struct vm_area_struct *new_vma,
+void hugetlb_dup_vma_private(struct mm_area *vma);
+void clear_vma_resv_huge_pages(struct mm_area *vma);
+int move_hugetlb_page_tables(struct mm_area *vma,
+			     struct mm_area *new_vma,
 			     unsigned long old_addr, unsigned long new_addr,
 			     unsigned long len);
 int copy_hugetlb_page_range(struct mm_struct *, struct mm_struct *,
-			    struct vm_area_struct *, struct vm_area_struct *);
-void unmap_hugepage_range(struct vm_area_struct *,
+			    struct mm_area *, struct mm_area *);
+void unmap_hugepage_range(struct mm_area *,
 			  unsigned long, unsigned long, struct page *,
 			  zap_flags_t);
 void __unmap_hugepage_range(struct mmu_gather *tlb,
-			  struct vm_area_struct *vma,
+			  struct mm_area *vma,
 			  unsigned long start, unsigned long end,
 			  struct page *ref_page, zap_flags_t zap_flags);
 void hugetlb_report_meminfo(struct seq_file *);
 int hugetlb_report_node_meminfo(char *buf, int len, int nid);
 void hugetlb_show_meminfo_node(int nid);
 unsigned long hugetlb_total_pages(void);
-vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+vm_fault_t hugetlb_fault(struct mm_struct *mm, struct mm_area *vma,
 			unsigned long address, unsigned int flags);
 #ifdef CONFIG_USERFAULTFD
 int hugetlb_mfill_atomic_pte(pte_t *dst_pte,
-			     struct vm_area_struct *dst_vma,
+			     struct mm_area *dst_vma,
 			     unsigned long dst_addr,
 			     unsigned long src_addr,
 			     uffd_flags_t flags,
 			     struct folio **foliop);
 #endif /* CONFIG_USERFAULTFD */
 bool hugetlb_reserve_pages(struct inode *inode, long from, long to,
-						struct vm_area_struct *vma,
+						struct mm_area *vma,
 						vm_flags_t vm_flags);
 long hugetlb_unreserve_pages(struct inode *inode, long start, long end,
 						long freed);
@@ -163,10 +163,10 @@ void hugetlb_fix_reserve_counts(struct inode *inode);
 extern struct mutex *hugetlb_fault_mutex_table;
 u32 hugetlb_fault_mutex_hash(struct address_space *mapping, pgoff_t idx);
 
-pte_t *huge_pmd_share(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pmd_share(struct mm_struct *mm, struct mm_area *vma,
 		      unsigned long addr, pud_t *pud);
 bool hugetlbfs_pagecache_present(struct hstate *h,
-				 struct vm_area_struct *vma,
+				 struct mm_area *vma,
 				 unsigned long address);
 
 struct address_space *hugetlb_folio_mapping_lock_write(struct folio *folio);
@@ -196,7 +196,7 @@ static inline pte_t *pte_alloc_huge(struct mm_struct *mm, pmd_t *pmd,
 }
 #endif
 
-pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pte_alloc(struct mm_struct *mm, struct mm_area *vma,
 			unsigned long addr, unsigned long sz);
 /*
  * huge_pte_offset(): Walk the hugetlb pgtable until the last level PTE.
@@ -238,51 +238,51 @@ pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
 pte_t *huge_pte_offset(struct mm_struct *mm,
 		       unsigned long addr, unsigned long sz);
 unsigned long hugetlb_mask_last_page(struct hstate *h);
-int huge_pmd_unshare(struct mm_struct *mm, struct vm_area_struct *vma,
+int huge_pmd_unshare(struct mm_struct *mm, struct mm_area *vma,
 				unsigned long addr, pte_t *ptep);
-void adjust_range_if_pmd_sharing_possible(struct vm_area_struct *vma,
+void adjust_range_if_pmd_sharing_possible(struct mm_area *vma,
 				unsigned long *start, unsigned long *end);
 
-extern void __hugetlb_zap_begin(struct vm_area_struct *vma,
+extern void __hugetlb_zap_begin(struct mm_area *vma,
 				unsigned long *begin, unsigned long *end);
-extern void __hugetlb_zap_end(struct vm_area_struct *vma,
+extern void __hugetlb_zap_end(struct mm_area *vma,
 			      struct zap_details *details);
 
-static inline void hugetlb_zap_begin(struct vm_area_struct *vma,
+static inline void hugetlb_zap_begin(struct mm_area *vma,
 				     unsigned long *start, unsigned long *end)
 {
 	if (is_vm_hugetlb_page(vma))
 		__hugetlb_zap_begin(vma, start, end);
 }
 
-static inline void hugetlb_zap_end(struct vm_area_struct *vma,
+static inline void hugetlb_zap_end(struct mm_area *vma,
 				   struct zap_details *details)
 {
 	if (is_vm_hugetlb_page(vma))
 		__hugetlb_zap_end(vma, details);
 }
 
-void hugetlb_vma_lock_read(struct vm_area_struct *vma);
-void hugetlb_vma_unlock_read(struct vm_area_struct *vma);
-void hugetlb_vma_lock_write(struct vm_area_struct *vma);
-void hugetlb_vma_unlock_write(struct vm_area_struct *vma);
-int hugetlb_vma_trylock_write(struct vm_area_struct *vma);
-void hugetlb_vma_assert_locked(struct vm_area_struct *vma);
+void hugetlb_vma_lock_read(struct mm_area *vma);
+void hugetlb_vma_unlock_read(struct mm_area *vma);
+void hugetlb_vma_lock_write(struct mm_area *vma);
+void hugetlb_vma_unlock_write(struct mm_area *vma);
+int hugetlb_vma_trylock_write(struct mm_area *vma);
+void hugetlb_vma_assert_locked(struct mm_area *vma);
 void hugetlb_vma_lock_release(struct kref *kref);
-long hugetlb_change_protection(struct vm_area_struct *vma,
+long hugetlb_change_protection(struct mm_area *vma,
 		unsigned long address, unsigned long end, pgprot_t newprot,
 		unsigned long cp_flags);
 bool is_hugetlb_entry_migration(pte_t pte);
 bool is_hugetlb_entry_hwpoisoned(pte_t pte);
-void hugetlb_unshare_all_pmds(struct vm_area_struct *vma);
+void hugetlb_unshare_all_pmds(struct mm_area *vma);
 
 #else /* !CONFIG_HUGETLB_PAGE */
 
-static inline void hugetlb_dup_vma_private(struct vm_area_struct *vma)
+static inline void hugetlb_dup_vma_private(struct mm_area *vma)
 {
 }
 
-static inline void clear_vma_resv_huge_pages(struct vm_area_struct *vma)
+static inline void clear_vma_resv_huge_pages(struct mm_area *vma)
 {
 }
 
@@ -298,41 +298,41 @@ static inline struct address_space *hugetlb_folio_mapping_lock_write(
 }
 
 static inline int huge_pmd_unshare(struct mm_struct *mm,
-					struct vm_area_struct *vma,
+					struct mm_area *vma,
 					unsigned long addr, pte_t *ptep)
 {
 	return 0;
 }
 
 static inline void adjust_range_if_pmd_sharing_possible(
-				struct vm_area_struct *vma,
+				struct mm_area *vma,
 				unsigned long *start, unsigned long *end)
 {
 }
 
 static inline void hugetlb_zap_begin(
-				struct vm_area_struct *vma,
+				struct mm_area *vma,
 				unsigned long *start, unsigned long *end)
 {
 }
 
 static inline void hugetlb_zap_end(
-				struct vm_area_struct *vma,
+				struct mm_area *vma,
 				struct zap_details *details)
 {
 }
 
 static inline int copy_hugetlb_page_range(struct mm_struct *dst,
 					  struct mm_struct *src,
-					  struct vm_area_struct *dst_vma,
-					  struct vm_area_struct *src_vma)
+					  struct mm_area *dst_vma,
+					  struct mm_area *src_vma)
 {
 	BUG();
 	return 0;
 }
 
-static inline int move_hugetlb_page_tables(struct vm_area_struct *vma,
-					   struct vm_area_struct *new_vma,
+static inline int move_hugetlb_page_tables(struct mm_area *vma,
+					   struct mm_area *new_vma,
 					   unsigned long old_addr,
 					   unsigned long new_addr,
 					   unsigned long len)
@@ -360,28 +360,28 @@ static inline int prepare_hugepage_range(struct file *file,
 	return -EINVAL;
 }
 
-static inline void hugetlb_vma_lock_read(struct vm_area_struct *vma)
+static inline void hugetlb_vma_lock_read(struct mm_area *vma)
 {
 }
 
-static inline void hugetlb_vma_unlock_read(struct vm_area_struct *vma)
+static inline void hugetlb_vma_unlock_read(struct mm_area *vma)
 {
 }
 
-static inline void hugetlb_vma_lock_write(struct vm_area_struct *vma)
+static inline void hugetlb_vma_lock_write(struct mm_area *vma)
 {
 }
 
-static inline void hugetlb_vma_unlock_write(struct vm_area_struct *vma)
+static inline void hugetlb_vma_unlock_write(struct mm_area *vma)
 {
 }
 
-static inline int hugetlb_vma_trylock_write(struct vm_area_struct *vma)
+static inline int hugetlb_vma_trylock_write(struct mm_area *vma)
 {
 	return 1;
 }
 
-static inline void hugetlb_vma_assert_locked(struct vm_area_struct *vma)
+static inline void hugetlb_vma_assert_locked(struct mm_area *vma)
 {
 }
 
@@ -400,7 +400,7 @@ static inline void hugetlb_free_pgd_range(struct mmu_gather *tlb,
 
 #ifdef CONFIG_USERFAULTFD
 static inline int hugetlb_mfill_atomic_pte(pte_t *dst_pte,
-					   struct vm_area_struct *dst_vma,
+					   struct mm_area *dst_vma,
 					   unsigned long dst_addr,
 					   unsigned long src_addr,
 					   uffd_flags_t flags,
@@ -443,7 +443,7 @@ static inline void move_hugetlb_state(struct folio *old_folio,
 }
 
 static inline long hugetlb_change_protection(
-			struct vm_area_struct *vma, unsigned long address,
+			struct mm_area *vma, unsigned long address,
 			unsigned long end, pgprot_t newprot,
 			unsigned long cp_flags)
 {
@@ -451,7 +451,7 @@ static inline long hugetlb_change_protection(
 }
 
 static inline void __unmap_hugepage_range(struct mmu_gather *tlb,
-			struct vm_area_struct *vma, unsigned long start,
+			struct mm_area *vma, unsigned long start,
 			unsigned long end, struct page *ref_page,
 			zap_flags_t zap_flags)
 {
@@ -459,14 +459,14 @@ static inline void __unmap_hugepage_range(struct mmu_gather *tlb,
 }
 
 static inline vm_fault_t hugetlb_fault(struct mm_struct *mm,
-			struct vm_area_struct *vma, unsigned long address,
+			struct mm_area *vma, unsigned long address,
 			unsigned int flags)
 {
 	BUG();
 	return 0;
 }
 
-static inline void hugetlb_unshare_all_pmds(struct vm_area_struct *vma) { }
+static inline void hugetlb_unshare_all_pmds(struct mm_area *vma) { }
 
 #endif /* !CONFIG_HUGETLB_PAGE */
 
@@ -698,7 +698,7 @@ bool hugetlb_bootmem_page_zones_valid(int nid, struct huge_bootmem_page *m);
 int isolate_or_dissolve_huge_page(struct page *page, struct list_head *list);
 int replace_free_hugepage_folios(unsigned long start_pfn, unsigned long end_pfn);
 void wait_for_freed_hugetlb_folios(void);
-struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
+struct folio *alloc_hugetlb_folio(struct mm_area *vma,
 				unsigned long addr, bool cow_from_owner);
 struct folio *alloc_hugetlb_folio_nodemask(struct hstate *h, int preferred_nid,
 				nodemask_t *nmask, gfp_t gfp_mask,
@@ -708,7 +708,7 @@ struct folio *alloc_hugetlb_folio_reserve(struct hstate *h, int preferred_nid,
 
 int hugetlb_add_to_page_cache(struct folio *folio, struct address_space *mapping,
 			pgoff_t idx);
-void restore_reserve_on_error(struct hstate *h, struct vm_area_struct *vma,
+void restore_reserve_on_error(struct hstate *h, struct mm_area *vma,
 				unsigned long address, struct folio *folio);
 
 /* arch callback */
@@ -756,7 +756,7 @@ static inline struct hstate *hstate_sizelog(int page_size_log)
 	return NULL;
 }
 
-static inline struct hstate *hstate_vma(struct vm_area_struct *vma)
+static inline struct hstate *hstate_vma(struct mm_area *vma)
 {
 	return hstate_file(vma->vm_file);
 }
@@ -766,9 +766,9 @@ static inline unsigned long huge_page_size(const struct hstate *h)
 	return (unsigned long)PAGE_SIZE << h->order;
 }
 
-extern unsigned long vma_kernel_pagesize(struct vm_area_struct *vma);
+extern unsigned long vma_kernel_pagesize(struct mm_area *vma);
 
-extern unsigned long vma_mmu_pagesize(struct vm_area_struct *vma);
+extern unsigned long vma_mmu_pagesize(struct mm_area *vma);
 
 static inline unsigned long huge_page_mask(struct hstate *h)
 {
@@ -1028,7 +1028,7 @@ static inline void hugetlb_count_sub(long l, struct mm_struct *mm)
 
 #ifndef huge_ptep_modify_prot_start
 #define huge_ptep_modify_prot_start huge_ptep_modify_prot_start
-static inline pte_t huge_ptep_modify_prot_start(struct vm_area_struct *vma,
+static inline pte_t huge_ptep_modify_prot_start(struct mm_area *vma,
 						unsigned long addr, pte_t *ptep)
 {
 	unsigned long psize = huge_page_size(hstate_vma(vma));
@@ -1039,7 +1039,7 @@ static inline pte_t huge_ptep_modify_prot_start(struct vm_area_struct *vma,
 
 #ifndef huge_ptep_modify_prot_commit
 #define huge_ptep_modify_prot_commit huge_ptep_modify_prot_commit
-static inline void huge_ptep_modify_prot_commit(struct vm_area_struct *vma,
+static inline void huge_ptep_modify_prot_commit(struct mm_area *vma,
 						unsigned long addr, pte_t *ptep,
 						pte_t old_pte, pte_t pte)
 {
@@ -1099,7 +1099,7 @@ static inline void wait_for_freed_hugetlb_folios(void)
 {
 }
 
-static inline struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
+static inline struct folio *alloc_hugetlb_folio(struct mm_area *vma,
 					   unsigned long addr,
 					   bool cow_from_owner)
 {
@@ -1136,7 +1136,7 @@ static inline struct hstate *hstate_sizelog(int page_size_log)
 	return NULL;
 }
 
-static inline struct hstate *hstate_vma(struct vm_area_struct *vma)
+static inline struct hstate *hstate_vma(struct mm_area *vma)
 {
 	return NULL;
 }
@@ -1161,12 +1161,12 @@ static inline unsigned long huge_page_mask(struct hstate *h)
 	return PAGE_MASK;
 }
 
-static inline unsigned long vma_kernel_pagesize(struct vm_area_struct *vma)
+static inline unsigned long vma_kernel_pagesize(struct mm_area *vma)
 {
 	return PAGE_SIZE;
 }
 
-static inline unsigned long vma_mmu_pagesize(struct vm_area_struct *vma)
+static inline unsigned long vma_mmu_pagesize(struct mm_area *vma)
 {
 	return PAGE_SIZE;
 }
@@ -1255,7 +1255,7 @@ static inline void hugetlb_count_sub(long l, struct mm_struct *mm)
 {
 }
 
-static inline pte_t huge_ptep_clear_flush(struct vm_area_struct *vma,
+static inline pte_t huge_ptep_clear_flush(struct mm_area *vma,
 					  unsigned long addr, pte_t *ptep)
 {
 #ifdef CONFIG_MMU
@@ -1279,7 +1279,7 @@ static inline void hugetlb_unregister_node(struct node *node)
 }
 
 static inline bool hugetlbfs_pagecache_present(
-    struct hstate *h, struct vm_area_struct *vma, unsigned long address)
+    struct hstate *h, struct mm_area *vma, unsigned long address)
 {
 	return false;
 }
@@ -1324,7 +1324,7 @@ static inline bool hugetlb_pmd_shared(pte_t *pte)
 }
 #endif
 
-bool want_pmd_share(struct vm_area_struct *vma, unsigned long addr);
+bool want_pmd_share(struct mm_area *vma, unsigned long addr);
 
 #ifndef __HAVE_ARCH_FLUSH_HUGETLB_TLB_RANGE
 /*
@@ -1334,19 +1334,19 @@ bool want_pmd_share(struct vm_area_struct *vma, unsigned long addr);
 #define flush_hugetlb_tlb_range(vma, addr, end)	flush_tlb_range(vma, addr, end)
 #endif
 
-static inline bool __vma_shareable_lock(struct vm_area_struct *vma)
+static inline bool __vma_shareable_lock(struct mm_area *vma)
 {
 	return (vma->vm_flags & VM_MAYSHARE) && vma->vm_private_data;
 }
 
-bool __vma_private_lock(struct vm_area_struct *vma);
+bool __vma_private_lock(struct mm_area *vma);
 
 /*
  * Safe version of huge_pte_offset() to check the locks.  See comments
  * above huge_pte_offset().
  */
 static inline pte_t *
-hugetlb_walk(struct vm_area_struct *vma, unsigned long addr, unsigned long sz)
+hugetlb_walk(struct mm_area *vma, unsigned long addr, unsigned long sz)
 {
 #if defined(CONFIG_HUGETLB_PMD_PAGE_TABLE_SHARING) && defined(CONFIG_LOCKDEP)
 	struct hugetlb_vma_lock *vma_lock = vma->vm_private_data;
diff --git a/include/linux/hugetlb_inline.h b/include/linux/hugetlb_inline.h
index 0660a03d37d9..d3d90fb50ebf 100644
--- a/include/linux/hugetlb_inline.h
+++ b/include/linux/hugetlb_inline.h
@@ -6,14 +6,14 @@
 
 #include <linux/mm.h>
 
-static inline bool is_vm_hugetlb_page(struct vm_area_struct *vma)
+static inline bool is_vm_hugetlb_page(struct mm_area *vma)
 {
 	return !!(vma->vm_flags & VM_HUGETLB);
 }
 
 #else
 
-static inline bool is_vm_hugetlb_page(struct vm_area_struct *vma)
+static inline bool is_vm_hugetlb_page(struct mm_area *vma)
 {
 	return false;
 }
diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h
index 7376c1df9c90..04d6dfd172da 100644
--- a/include/linux/io-mapping.h
+++ b/include/linux/io-mapping.h
@@ -225,7 +225,7 @@ io_mapping_free(struct io_mapping *iomap)
 	kfree(iomap);
 }
 
-int io_mapping_map_user(struct io_mapping *iomap, struct vm_area_struct *vma,
+int io_mapping_map_user(struct io_mapping *iomap, struct mm_area *vma,
 		unsigned long addr, unsigned long pfn, unsigned long size);
 
 #endif /* _LINUX_IO_MAPPING_H */
diff --git a/include/linux/iomap.h b/include/linux/iomap.h
index 02fe001feebb..2186061ce745 100644
--- a/include/linux/iomap.h
+++ b/include/linux/iomap.h
@@ -19,7 +19,7 @@ struct iomap_writepage_ctx;
 struct iov_iter;
 struct kiocb;
 struct page;
-struct vm_area_struct;
+struct mm_area;
 struct vm_fault;
 
 /*
diff --git a/include/linux/iommu-dma.h b/include/linux/iommu-dma.h
index 508beaa44c39..ff772553d76b 100644
--- a/include/linux/iommu-dma.h
+++ b/include/linux/iommu-dma.h
@@ -32,7 +32,7 @@ void iommu_dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nents,
 		enum dma_data_direction dir, unsigned long attrs);
 void *iommu_dma_alloc(struct device *dev, size_t size, dma_addr_t *handle,
 		gfp_t gfp, unsigned long attrs);
-int iommu_dma_mmap(struct device *dev, struct vm_area_struct *vma,
+int iommu_dma_mmap(struct device *dev, struct mm_area *vma,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs);
 int iommu_dma_get_sgtable(struct device *dev, struct sg_table *sgt,
@@ -55,7 +55,7 @@ void *iommu_dma_vmap_noncontiguous(struct device *dev, size_t size,
 		struct sg_table *sgt);
 #define iommu_dma_vunmap_noncontiguous(dev, vaddr) \
 	vunmap(vaddr);
-int iommu_dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
+int iommu_dma_mmap_noncontiguous(struct device *dev, struct mm_area *vma,
 		size_t size, struct sg_table *sgt);
 void iommu_dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle,
 		size_t size, enum dma_data_direction dir);
diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h
index b5a5f32fdfd1..087c03af27b8 100644
--- a/include/linux/kernfs.h
+++ b/include/linux/kernfs.h
@@ -24,7 +24,7 @@ struct file;
 struct dentry;
 struct iattr;
 struct seq_file;
-struct vm_area_struct;
+struct mm_area;
 struct vm_operations_struct;
 struct super_block;
 struct file_system_type;
@@ -322,7 +322,7 @@ struct kernfs_ops {
 	__poll_t (*poll)(struct kernfs_open_file *of,
 			 struct poll_table_struct *pt);
 
-	int (*mmap)(struct kernfs_open_file *of, struct vm_area_struct *vma);
+	int (*mmap)(struct kernfs_open_file *of, struct mm_area *vma);
 	loff_t (*llseek)(struct kernfs_open_file *of, loff_t offset, int whence);
 };
 
diff --git a/include/linux/khugepaged.h b/include/linux/khugepaged.h
index 1f46046080f5..df545b9908b0 100644
--- a/include/linux/khugepaged.h
+++ b/include/linux/khugepaged.h
@@ -11,7 +11,7 @@ extern void khugepaged_destroy(void);
 extern int start_stop_khugepaged(void);
 extern void __khugepaged_enter(struct mm_struct *mm);
 extern void __khugepaged_exit(struct mm_struct *mm);
-extern void khugepaged_enter_vma(struct vm_area_struct *vma,
+extern void khugepaged_enter_vma(struct mm_area *vma,
 				 unsigned long vm_flags);
 extern void khugepaged_min_free_kbytes_update(void);
 extern bool current_is_khugepaged(void);
@@ -44,7 +44,7 @@ static inline void khugepaged_fork(struct mm_struct *mm, struct mm_struct *oldmm
 static inline void khugepaged_exit(struct mm_struct *mm)
 {
 }
-static inline void khugepaged_enter_vma(struct vm_area_struct *vma,
+static inline void khugepaged_enter_vma(struct mm_area *vma,
 					unsigned long vm_flags)
 {
 }
diff --git a/include/linux/ksm.h b/include/linux/ksm.h
index d73095b5cd96..b215a192a192 100644
--- a/include/linux/ksm.h
+++ b/include/linux/ksm.h
@@ -15,10 +15,10 @@
 #include <linux/sched.h>
 
 #ifdef CONFIG_KSM
-int ksm_madvise(struct vm_area_struct *vma, unsigned long start,
+int ksm_madvise(struct mm_area *vma, unsigned long start,
 		unsigned long end, int advice, unsigned long *vm_flags);
 
-void ksm_add_vma(struct vm_area_struct *vma);
+void ksm_add_vma(struct mm_area *vma);
 int ksm_enable_merge_any(struct mm_struct *mm);
 int ksm_disable_merge_any(struct mm_struct *mm);
 int ksm_disable(struct mm_struct *mm);
@@ -86,7 +86,7 @@ static inline void ksm_exit(struct mm_struct *mm)
  * but what if the vma was unmerged while the page was swapped out?
  */
 struct folio *ksm_might_need_to_copy(struct folio *folio,
-			struct vm_area_struct *vma, unsigned long addr);
+			struct mm_area *vma, unsigned long addr);
 
 void rmap_walk_ksm(struct folio *folio, struct rmap_walk_control *rwc);
 void folio_migrate_ksm(struct folio *newfolio, struct folio *folio);
@@ -97,7 +97,7 @@ bool ksm_process_mergeable(struct mm_struct *mm);
 
 #else  /* !CONFIG_KSM */
 
-static inline void ksm_add_vma(struct vm_area_struct *vma)
+static inline void ksm_add_vma(struct mm_area *vma)
 {
 }
 
@@ -130,14 +130,14 @@ static inline void collect_procs_ksm(const struct folio *folio,
 }
 
 #ifdef CONFIG_MMU
-static inline int ksm_madvise(struct vm_area_struct *vma, unsigned long start,
+static inline int ksm_madvise(struct mm_area *vma, unsigned long start,
 		unsigned long end, int advice, unsigned long *vm_flags)
 {
 	return 0;
 }
 
 static inline struct folio *ksm_might_need_to_copy(struct folio *folio,
-			struct vm_area_struct *vma, unsigned long addr)
+			struct mm_area *vma, unsigned long addr)
 {
 	return folio;
 }
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 5438a1b446a6..09b7d56cacdb 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -2340,7 +2340,7 @@ struct kvm_device_ops {
 	int (*has_attr)(struct kvm_device *dev, struct kvm_device_attr *attr);
 	long (*ioctl)(struct kvm_device *dev, unsigned int ioctl,
 		      unsigned long arg);
-	int (*mmap)(struct kvm_device *dev, struct vm_area_struct *vma);
+	int (*mmap)(struct kvm_device *dev, struct mm_area *vma);
 };
 
 struct kvm_device *kvm_device_from_filp(struct file *filp);
diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h
index bf3bbac4e02a..0401c8ceeaa0 100644
--- a/include/linux/lsm_hook_defs.h
+++ b/include/linux/lsm_hook_defs.h
@@ -196,7 +196,7 @@ LSM_HOOK(int, 0, file_ioctl_compat, struct file *file, unsigned int cmd,
 LSM_HOOK(int, 0, mmap_addr, unsigned long addr)
 LSM_HOOK(int, 0, mmap_file, struct file *file, unsigned long reqprot,
 	 unsigned long prot, unsigned long flags)
-LSM_HOOK(int, 0, file_mprotect, struct vm_area_struct *vma,
+LSM_HOOK(int, 0, file_mprotect, struct mm_area *vma,
 	 unsigned long reqprot, unsigned long prot)
 LSM_HOOK(int, 0, file_lock, struct file *file, unsigned int cmd)
 LSM_HOOK(int, 0, file_fcntl, struct file *file, unsigned int cmd,
diff --git a/include/linux/mempolicy.h b/include/linux/mempolicy.h
index ce9885e0178a..8bf1d4d50ce8 100644
--- a/include/linux/mempolicy.h
+++ b/include/linux/mempolicy.h
@@ -118,27 +118,27 @@ struct sp_node {
 	struct mempolicy *policy;
 };
 
-int vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst);
+int vma_dup_policy(struct mm_area *src, struct mm_area *dst);
 void mpol_shared_policy_init(struct shared_policy *sp, struct mempolicy *mpol);
 int mpol_set_shared_policy(struct shared_policy *sp,
-			   struct vm_area_struct *vma, struct mempolicy *mpol);
+			   struct mm_area *vma, struct mempolicy *mpol);
 void mpol_free_shared_policy(struct shared_policy *sp);
 struct mempolicy *mpol_shared_policy_lookup(struct shared_policy *sp,
 					    pgoff_t idx);
 
 struct mempolicy *get_task_policy(struct task_struct *p);
-struct mempolicy *__get_vma_policy(struct vm_area_struct *vma,
+struct mempolicy *__get_vma_policy(struct mm_area *vma,
 		unsigned long addr, pgoff_t *ilx);
-struct mempolicy *get_vma_policy(struct vm_area_struct *vma,
+struct mempolicy *get_vma_policy(struct mm_area *vma,
 		unsigned long addr, int order, pgoff_t *ilx);
-bool vma_policy_mof(struct vm_area_struct *vma);
+bool vma_policy_mof(struct mm_area *vma);
 
 extern void numa_default_policy(void);
 extern void numa_policy_init(void);
 extern void mpol_rebind_task(struct task_struct *tsk, const nodemask_t *new);
 extern void mpol_rebind_mm(struct mm_struct *mm, nodemask_t *new);
 
-extern int huge_node(struct vm_area_struct *vma,
+extern int huge_node(struct mm_area *vma,
 				unsigned long addr, gfp_t gfp_flags,
 				struct mempolicy **mpol, nodemask_t **nodemask);
 extern bool init_nodemask_of_mempolicy(nodemask_t *mask);
@@ -165,7 +165,7 @@ extern int mpol_parse_str(char *str, struct mempolicy **mpol);
 extern void mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol);
 
 /* Check if a vma is migratable */
-extern bool vma_migratable(struct vm_area_struct *vma);
+extern bool vma_migratable(struct mm_area *vma);
 
 int mpol_misplaced(struct folio *folio, struct vm_fault *vmf,
 					unsigned long addr);
@@ -221,7 +221,7 @@ mpol_shared_policy_lookup(struct shared_policy *sp, pgoff_t idx)
 	return NULL;
 }
 
-static inline struct mempolicy *get_vma_policy(struct vm_area_struct *vma,
+static inline struct mempolicy *get_vma_policy(struct mm_area *vma,
 				unsigned long addr, int order, pgoff_t *ilx)
 {
 	*ilx = 0;
@@ -229,7 +229,7 @@ static inline struct mempolicy *get_vma_policy(struct vm_area_struct *vma,
 }
 
 static inline int
-vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst)
+vma_dup_policy(struct mm_area *src, struct mm_area *dst)
 {
 	return 0;
 }
@@ -251,7 +251,7 @@ static inline void mpol_rebind_mm(struct mm_struct *mm, nodemask_t *new)
 {
 }
 
-static inline int huge_node(struct vm_area_struct *vma,
+static inline int huge_node(struct mm_area *vma,
 				unsigned long addr, gfp_t gfp_flags,
 				struct mempolicy **mpol, nodemask_t **nodemask)
 {
diff --git a/include/linux/migrate.h b/include/linux/migrate.h
index aaa2114498d6..e64c14d9bd5a 100644
--- a/include/linux/migrate.h
+++ b/include/linux/migrate.h
@@ -143,11 +143,11 @@ const struct movable_operations *page_movable_ops(struct page *page)
 
 #ifdef CONFIG_NUMA_BALANCING
 int migrate_misplaced_folio_prepare(struct folio *folio,
-		struct vm_area_struct *vma, int node);
+		struct mm_area *vma, int node);
 int migrate_misplaced_folio(struct folio *folio, int node);
 #else
 static inline int migrate_misplaced_folio_prepare(struct folio *folio,
-		struct vm_area_struct *vma, int node)
+		struct mm_area *vma, int node)
 {
 	return -EAGAIN; /* can't migrate now */
 }
@@ -188,7 +188,7 @@ enum migrate_vma_direction {
 };
 
 struct migrate_vma {
-	struct vm_area_struct	*vma;
+	struct mm_area	*vma;
 	/*
 	 * Both src and dst array must be big enough for
 	 * (end - start) >> PAGE_SHIFT entries.
diff --git a/include/linux/mm.h b/include/linux/mm.h
index b7f13f087954..193ef16cd441 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -230,9 +230,9 @@ void setup_initial_init_mm(void *start_code, void *end_code,
  * mmap() functions).
  */
 
-struct vm_area_struct *vm_area_alloc(struct mm_struct *);
-struct vm_area_struct *vm_area_dup(struct vm_area_struct *);
-void vm_area_free(struct vm_area_struct *);
+struct mm_area *vm_area_alloc(struct mm_struct *);
+struct mm_area *vm_area_dup(struct mm_area *);
+void vm_area_free(struct mm_area *);
 
 #ifndef CONFIG_MMU
 extern struct rb_root nommu_region_tree;
@@ -242,7 +242,7 @@ extern unsigned int kobjsize(const void *objp);
 #endif
 
 /*
- * vm_flags in vm_area_struct, see mm_types.h.
+ * vm_flags in mm_area, see mm_types.h.
  * When changing, update also include/trace/events/mmflags.h
  */
 #define VM_NONE		0x00000000
@@ -533,7 +533,7 @@ static inline bool fault_flag_allow_retry_first(enum fault_flag flags)
  */
 struct vm_fault {
 	const struct {
-		struct vm_area_struct *vma;	/* Target VMA */
+		struct mm_area *vma;	/* Target VMA */
 		gfp_t gfp_mask;			/* gfp mask to be used for allocations */
 		pgoff_t pgoff;			/* Logical page offset based on vma */
 		unsigned long address;		/* Faulting virtual address - masked */
@@ -583,27 +583,27 @@ struct vm_fault {
  * to the functions called when a no-page or a wp-page exception occurs.
  */
 struct vm_operations_struct {
-	void (*open)(struct vm_area_struct * area);
+	void (*open)(struct mm_area * area);
 	/**
 	 * @close: Called when the VMA is being removed from the MM.
 	 * Context: User context.  May sleep.  Caller holds mmap_lock.
 	 */
-	void (*close)(struct vm_area_struct * area);
+	void (*close)(struct mm_area * area);
 	/* Called any time before splitting to check if it's allowed */
-	int (*may_split)(struct vm_area_struct *area, unsigned long addr);
-	int (*mremap)(struct vm_area_struct *area);
+	int (*may_split)(struct mm_area *area, unsigned long addr);
+	int (*mremap)(struct mm_area *area);
 	/*
 	 * Called by mprotect() to make driver-specific permission
 	 * checks before mprotect() is finalised.   The VMA must not
 	 * be modified.  Returns 0 if mprotect() can proceed.
 	 */
-	int (*mprotect)(struct vm_area_struct *vma, unsigned long start,
+	int (*mprotect)(struct mm_area *vma, unsigned long start,
 			unsigned long end, unsigned long newflags);
 	vm_fault_t (*fault)(struct vm_fault *vmf);
 	vm_fault_t (*huge_fault)(struct vm_fault *vmf, unsigned int order);
 	vm_fault_t (*map_pages)(struct vm_fault *vmf,
 			pgoff_t start_pgoff, pgoff_t end_pgoff);
-	unsigned long (*pagesize)(struct vm_area_struct * area);
+	unsigned long (*pagesize)(struct mm_area * area);
 
 	/* notification that a previously read-only page is about to become
 	 * writable, if an error is returned it will cause a SIGBUS */
@@ -616,13 +616,13 @@ struct vm_operations_struct {
 	 * for use by special VMAs. See also generic_access_phys() for a generic
 	 * implementation useful for any iomem mapping.
 	 */
-	int (*access)(struct vm_area_struct *vma, unsigned long addr,
+	int (*access)(struct mm_area *vma, unsigned long addr,
 		      void *buf, int len, int write);
 
 	/* Called by the /proc/PID/maps code to ask the vma whether it
 	 * has a special name.  Returning non-NULL will also cause this
 	 * vma to be dumped unconditionally. */
-	const char *(*name)(struct vm_area_struct *vma);
+	const char *(*name)(struct mm_area *vma);
 
 #ifdef CONFIG_NUMA
 	/*
@@ -632,7 +632,7 @@ struct vm_operations_struct {
 	 * install a MPOL_DEFAULT policy, nor the task or system default
 	 * mempolicy.
 	 */
-	int (*set_policy)(struct vm_area_struct *vma, struct mempolicy *new);
+	int (*set_policy)(struct mm_area *vma, struct mempolicy *new);
 
 	/*
 	 * get_policy() op must add reference [mpol_get()] to any policy at
@@ -644,7 +644,7 @@ struct vm_operations_struct {
 	 * must return NULL--i.e., do not "fallback" to task or system default
 	 * policy.
 	 */
-	struct mempolicy *(*get_policy)(struct vm_area_struct *vma,
+	struct mempolicy *(*get_policy)(struct mm_area *vma,
 					unsigned long addr, pgoff_t *ilx);
 #endif
 	/*
@@ -652,26 +652,26 @@ struct vm_operations_struct {
 	 * page for @addr.  This is useful if the default behavior
 	 * (using pte_page()) would not find the correct page.
 	 */
-	struct page *(*find_special_page)(struct vm_area_struct *vma,
+	struct page *(*find_special_page)(struct mm_area *vma,
 					  unsigned long addr);
 };
 
 #ifdef CONFIG_NUMA_BALANCING
-static inline void vma_numab_state_init(struct vm_area_struct *vma)
+static inline void vma_numab_state_init(struct mm_area *vma)
 {
 	vma->numab_state = NULL;
 }
-static inline void vma_numab_state_free(struct vm_area_struct *vma)
+static inline void vma_numab_state_free(struct mm_area *vma)
 {
 	kfree(vma->numab_state);
 }
 #else
-static inline void vma_numab_state_init(struct vm_area_struct *vma) {}
-static inline void vma_numab_state_free(struct vm_area_struct *vma) {}
+static inline void vma_numab_state_init(struct mm_area *vma) {}
+static inline void vma_numab_state_free(struct mm_area *vma) {}
 #endif /* CONFIG_NUMA_BALANCING */
 
 #ifdef CONFIG_PER_VMA_LOCK
-static inline void vma_lock_init(struct vm_area_struct *vma, bool reset_refcnt)
+static inline void vma_lock_init(struct mm_area *vma, bool reset_refcnt)
 {
 #ifdef CONFIG_DEBUG_LOCK_ALLOC
 	static struct lock_class_key lockdep_key;
@@ -694,7 +694,7 @@ static inline bool is_vma_writer_only(int refcnt)
 	return refcnt & VMA_LOCK_OFFSET && refcnt <= VMA_LOCK_OFFSET + 1;
 }
 
-static inline void vma_refcount_put(struct vm_area_struct *vma)
+static inline void vma_refcount_put(struct mm_area *vma)
 {
 	/* Use a copy of vm_mm in case vma is freed after we drop vm_refcnt */
 	struct mm_struct *mm = vma->vm_mm;
@@ -717,8 +717,8 @@ static inline void vma_refcount_put(struct vm_area_struct *vma)
  * Returns the vma on success, NULL on failure to lock and EAGAIN if vma got
  * detached.
  */
-static inline struct vm_area_struct *vma_start_read(struct mm_struct *mm,
-						    struct vm_area_struct *vma)
+static inline struct mm_area *vma_start_read(struct mm_struct *mm,
+						    struct mm_area *vma)
 {
 	int oldcnt;
 
@@ -770,7 +770,7 @@ static inline struct vm_area_struct *vma_start_read(struct mm_struct *mm,
  * not be used in such cases because it might fail due to mm_lock_seq overflow.
  * This functionality is used to obtain vma read lock and drop the mmap read lock.
  */
-static inline bool vma_start_read_locked_nested(struct vm_area_struct *vma, int subclass)
+static inline bool vma_start_read_locked_nested(struct mm_area *vma, int subclass)
 {
 	int oldcnt;
 
@@ -789,18 +789,18 @@ static inline bool vma_start_read_locked_nested(struct vm_area_struct *vma, int
  * not be used in such cases because it might fail due to mm_lock_seq overflow.
  * This functionality is used to obtain vma read lock and drop the mmap read lock.
  */
-static inline bool vma_start_read_locked(struct vm_area_struct *vma)
+static inline bool vma_start_read_locked(struct mm_area *vma)
 {
 	return vma_start_read_locked_nested(vma, 0);
 }
 
-static inline void vma_end_read(struct vm_area_struct *vma)
+static inline void vma_end_read(struct mm_area *vma)
 {
 	vma_refcount_put(vma);
 }
 
 /* WARNING! Can only be used if mmap_lock is expected to be write-locked */
-static bool __is_vma_write_locked(struct vm_area_struct *vma, unsigned int *mm_lock_seq)
+static bool __is_vma_write_locked(struct mm_area *vma, unsigned int *mm_lock_seq)
 {
 	mmap_assert_write_locked(vma->vm_mm);
 
@@ -812,14 +812,14 @@ static bool __is_vma_write_locked(struct vm_area_struct *vma, unsigned int *mm_l
 	return (vma->vm_lock_seq == *mm_lock_seq);
 }
 
-void __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq);
+void __vma_start_write(struct mm_area *vma, unsigned int mm_lock_seq);
 
 /*
  * Begin writing to a VMA.
  * Exclude concurrent readers under the per-VMA lock until the currently
  * write-locked mmap_lock is dropped or downgraded.
  */
-static inline void vma_start_write(struct vm_area_struct *vma)
+static inline void vma_start_write(struct mm_area *vma)
 {
 	unsigned int mm_lock_seq;
 
@@ -829,14 +829,14 @@ static inline void vma_start_write(struct vm_area_struct *vma)
 	__vma_start_write(vma, mm_lock_seq);
 }
 
-static inline void vma_assert_write_locked(struct vm_area_struct *vma)
+static inline void vma_assert_write_locked(struct mm_area *vma)
 {
 	unsigned int mm_lock_seq;
 
 	VM_BUG_ON_VMA(!__is_vma_write_locked(vma, &mm_lock_seq), vma);
 }
 
-static inline void vma_assert_locked(struct vm_area_struct *vma)
+static inline void vma_assert_locked(struct mm_area *vma)
 {
 	unsigned int mm_lock_seq;
 
@@ -849,24 +849,24 @@ static inline void vma_assert_locked(struct vm_area_struct *vma)
  * assertions should be made either under mmap_write_lock or when the object
  * has been isolated under mmap_write_lock, ensuring no competing writers.
  */
-static inline void vma_assert_attached(struct vm_area_struct *vma)
+static inline void vma_assert_attached(struct mm_area *vma)
 {
 	WARN_ON_ONCE(!refcount_read(&vma->vm_refcnt));
 }
 
-static inline void vma_assert_detached(struct vm_area_struct *vma)
+static inline void vma_assert_detached(struct mm_area *vma)
 {
 	WARN_ON_ONCE(refcount_read(&vma->vm_refcnt));
 }
 
-static inline void vma_mark_attached(struct vm_area_struct *vma)
+static inline void vma_mark_attached(struct mm_area *vma)
 {
 	vma_assert_write_locked(vma);
 	vma_assert_detached(vma);
 	refcount_set_release(&vma->vm_refcnt, 1);
 }
 
-void vma_mark_detached(struct vm_area_struct *vma);
+void vma_mark_detached(struct mm_area *vma);
 
 static inline void release_fault_lock(struct vm_fault *vmf)
 {
@@ -884,31 +884,31 @@ static inline void assert_fault_locked(struct vm_fault *vmf)
 		mmap_assert_locked(vmf->vma->vm_mm);
 }
 
-struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm,
+struct mm_area *lock_vma_under_rcu(struct mm_struct *mm,
 					  unsigned long address);
 
 #else /* CONFIG_PER_VMA_LOCK */
 
-static inline void vma_lock_init(struct vm_area_struct *vma, bool reset_refcnt) {}
-static inline struct vm_area_struct *vma_start_read(struct mm_struct *mm,
-						    struct vm_area_struct *vma)
+static inline void vma_lock_init(struct mm_area *vma, bool reset_refcnt) {}
+static inline struct mm_area *vma_start_read(struct mm_struct *mm,
+						    struct mm_area *vma)
 		{ return NULL; }
-static inline void vma_end_read(struct vm_area_struct *vma) {}
-static inline void vma_start_write(struct vm_area_struct *vma) {}
-static inline void vma_assert_write_locked(struct vm_area_struct *vma)
+static inline void vma_end_read(struct mm_area *vma) {}
+static inline void vma_start_write(struct mm_area *vma) {}
+static inline void vma_assert_write_locked(struct mm_area *vma)
 		{ mmap_assert_write_locked(vma->vm_mm); }
-static inline void vma_assert_attached(struct vm_area_struct *vma) {}
-static inline void vma_assert_detached(struct vm_area_struct *vma) {}
-static inline void vma_mark_attached(struct vm_area_struct *vma) {}
-static inline void vma_mark_detached(struct vm_area_struct *vma) {}
+static inline void vma_assert_attached(struct mm_area *vma) {}
+static inline void vma_assert_detached(struct mm_area *vma) {}
+static inline void vma_mark_attached(struct mm_area *vma) {}
+static inline void vma_mark_detached(struct mm_area *vma) {}
 
-static inline struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm,
+static inline struct mm_area *lock_vma_under_rcu(struct mm_struct *mm,
 		unsigned long address)
 {
 	return NULL;
 }
 
-static inline void vma_assert_locked(struct vm_area_struct *vma)
+static inline void vma_assert_locked(struct mm_area *vma)
 {
 	mmap_assert_locked(vma->vm_mm);
 }
@@ -927,7 +927,7 @@ static inline void assert_fault_locked(struct vm_fault *vmf)
 
 extern const struct vm_operations_struct vma_dummy_vm_ops;
 
-static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm)
+static inline void vma_init(struct mm_area *vma, struct mm_struct *mm)
 {
 	memset(vma, 0, sizeof(*vma));
 	vma->vm_mm = mm;
@@ -937,7 +937,7 @@ static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm)
 }
 
 /* Use when VMA is not part of the VMA tree and needs no locking */
-static inline void vm_flags_init(struct vm_area_struct *vma,
+static inline void vm_flags_init(struct mm_area *vma,
 				 vm_flags_t flags)
 {
 	ACCESS_PRIVATE(vma, __vm_flags) = flags;
@@ -948,28 +948,28 @@ static inline void vm_flags_init(struct vm_area_struct *vma,
  * Note: vm_flags_reset and vm_flags_reset_once do not lock the vma and
  * it should be locked explicitly beforehand.
  */
-static inline void vm_flags_reset(struct vm_area_struct *vma,
+static inline void vm_flags_reset(struct mm_area *vma,
 				  vm_flags_t flags)
 {
 	vma_assert_write_locked(vma);
 	vm_flags_init(vma, flags);
 }
 
-static inline void vm_flags_reset_once(struct vm_area_struct *vma,
+static inline void vm_flags_reset_once(struct mm_area *vma,
 				       vm_flags_t flags)
 {
 	vma_assert_write_locked(vma);
 	WRITE_ONCE(ACCESS_PRIVATE(vma, __vm_flags), flags);
 }
 
-static inline void vm_flags_set(struct vm_area_struct *vma,
+static inline void vm_flags_set(struct mm_area *vma,
 				vm_flags_t flags)
 {
 	vma_start_write(vma);
 	ACCESS_PRIVATE(vma, __vm_flags) |= flags;
 }
 
-static inline void vm_flags_clear(struct vm_area_struct *vma,
+static inline void vm_flags_clear(struct mm_area *vma,
 				  vm_flags_t flags)
 {
 	vma_start_write(vma);
@@ -980,7 +980,7 @@ static inline void vm_flags_clear(struct vm_area_struct *vma,
  * Use only if VMA is not part of the VMA tree or has no other users and
  * therefore needs no locking.
  */
-static inline void __vm_flags_mod(struct vm_area_struct *vma,
+static inline void __vm_flags_mod(struct mm_area *vma,
 				  vm_flags_t set, vm_flags_t clear)
 {
 	vm_flags_init(vma, (vma->vm_flags | set) & ~clear);
@@ -990,19 +990,19 @@ static inline void __vm_flags_mod(struct vm_area_struct *vma,
  * Use only when the order of set/clear operations is unimportant, otherwise
  * use vm_flags_{set|clear} explicitly.
  */
-static inline void vm_flags_mod(struct vm_area_struct *vma,
+static inline void vm_flags_mod(struct mm_area *vma,
 				vm_flags_t set, vm_flags_t clear)
 {
 	vma_start_write(vma);
 	__vm_flags_mod(vma, set, clear);
 }
 
-static inline void vma_set_anonymous(struct vm_area_struct *vma)
+static inline void vma_set_anonymous(struct mm_area *vma)
 {
 	vma->vm_ops = NULL;
 }
 
-static inline bool vma_is_anonymous(struct vm_area_struct *vma)
+static inline bool vma_is_anonymous(struct mm_area *vma)
 {
 	return !vma->vm_ops;
 }
@@ -1011,7 +1011,7 @@ static inline bool vma_is_anonymous(struct vm_area_struct *vma)
  * Indicate if the VMA is a heap for the given task; for
  * /proc/PID/maps that is the heap of the main task.
  */
-static inline bool vma_is_initial_heap(const struct vm_area_struct *vma)
+static inline bool vma_is_initial_heap(const struct mm_area *vma)
 {
 	return vma->vm_start < vma->vm_mm->brk &&
 		vma->vm_end > vma->vm_mm->start_brk;
@@ -1021,7 +1021,7 @@ static inline bool vma_is_initial_heap(const struct vm_area_struct *vma)
  * Indicate if the VMA is a stack for the given task; for
  * /proc/PID/maps that is the stack of the main task.
  */
-static inline bool vma_is_initial_stack(const struct vm_area_struct *vma)
+static inline bool vma_is_initial_stack(const struct mm_area *vma)
 {
 	/*
 	 * We make no effort to guess what a given thread considers to be
@@ -1032,7 +1032,7 @@ static inline bool vma_is_initial_stack(const struct vm_area_struct *vma)
 		vma->vm_end >= vma->vm_mm->start_stack;
 }
 
-static inline bool vma_is_temporary_stack(struct vm_area_struct *vma)
+static inline bool vma_is_temporary_stack(struct mm_area *vma)
 {
 	int maybe_stack = vma->vm_flags & (VM_GROWSDOWN | VM_GROWSUP);
 
@@ -1046,7 +1046,7 @@ static inline bool vma_is_temporary_stack(struct vm_area_struct *vma)
 	return false;
 }
 
-static inline bool vma_is_foreign(struct vm_area_struct *vma)
+static inline bool vma_is_foreign(struct mm_area *vma)
 {
 	if (!current->mm)
 		return true;
@@ -1057,7 +1057,7 @@ static inline bool vma_is_foreign(struct vm_area_struct *vma)
 	return false;
 }
 
-static inline bool vma_is_accessible(struct vm_area_struct *vma)
+static inline bool vma_is_accessible(struct mm_area *vma)
 {
 	return vma->vm_flags & VM_ACCESS_FLAGS;
 }
@@ -1068,18 +1068,18 @@ static inline bool is_shared_maywrite(vm_flags_t vm_flags)
 		(VM_SHARED | VM_MAYWRITE);
 }
 
-static inline bool vma_is_shared_maywrite(struct vm_area_struct *vma)
+static inline bool vma_is_shared_maywrite(struct mm_area *vma)
 {
 	return is_shared_maywrite(vma->vm_flags);
 }
 
 static inline
-struct vm_area_struct *vma_find(struct vma_iterator *vmi, unsigned long max)
+struct mm_area *vma_find(struct vma_iterator *vmi, unsigned long max)
 {
 	return mas_find(&vmi->mas, max - 1);
 }
 
-static inline struct vm_area_struct *vma_next(struct vma_iterator *vmi)
+static inline struct mm_area *vma_next(struct vma_iterator *vmi)
 {
 	/*
 	 * Uses mas_find() to get the first VMA when the iterator starts.
@@ -1089,13 +1089,13 @@ static inline struct vm_area_struct *vma_next(struct vma_iterator *vmi)
 }
 
 static inline
-struct vm_area_struct *vma_iter_next_range(struct vma_iterator *vmi)
+struct mm_area *vma_iter_next_range(struct vma_iterator *vmi)
 {
 	return mas_next_range(&vmi->mas, ULONG_MAX);
 }
 
 
-static inline struct vm_area_struct *vma_prev(struct vma_iterator *vmi)
+static inline struct mm_area *vma_prev(struct vma_iterator *vmi)
 {
 	return mas_prev(&vmi->mas, 0);
 }
@@ -1118,7 +1118,7 @@ static inline void vma_iter_free(struct vma_iterator *vmi)
 }
 
 static inline int vma_iter_bulk_store(struct vma_iterator *vmi,
-				      struct vm_area_struct *vma)
+				      struct mm_area *vma)
 {
 	vmi->mas.index = vma->vm_start;
 	vmi->mas.last = vma->vm_end - 1;
@@ -1152,14 +1152,14 @@ static inline void vma_iter_set(struct vma_iterator *vmi, unsigned long addr)
  * The vma_is_shmem is not inline because it is used only by slow
  * paths in userfault.
  */
-bool vma_is_shmem(struct vm_area_struct *vma);
-bool vma_is_anon_shmem(struct vm_area_struct *vma);
+bool vma_is_shmem(struct mm_area *vma);
+bool vma_is_anon_shmem(struct mm_area *vma);
 #else
-static inline bool vma_is_shmem(struct vm_area_struct *vma) { return false; }
-static inline bool vma_is_anon_shmem(struct vm_area_struct *vma) { return false; }
+static inline bool vma_is_shmem(struct mm_area *vma) { return false; }
+static inline bool vma_is_anon_shmem(struct mm_area *vma) { return false; }
 #endif
 
-int vma_is_stack_for_current(struct vm_area_struct *vma);
+int vma_is_stack_for_current(struct mm_area *vma);
 
 /* flush_tlb_range() takes a vma, not a mm, and can care about flags */
 #define TLB_FLUSH_VMA(mm,flags) { .vm_mm = (mm), .vm_flags = (flags) }
@@ -1435,7 +1435,7 @@ static inline unsigned long thp_size(struct page *page)
  * pte_mkwrite.  But get_user_pages can cause write faults for mappings
  * that do not have writing enabled, when used by access_process_vm.
  */
-static inline pte_t maybe_mkwrite(pte_t pte, struct vm_area_struct *vma)
+static inline pte_t maybe_mkwrite(pte_t pte, struct mm_area *vma)
 {
 	if (likely(vma->vm_flags & VM_WRITE))
 		pte = pte_mkwrite(pte, vma);
@@ -1811,7 +1811,7 @@ static inline int folio_xchg_access_time(struct folio *folio, int time)
 	return last_time << PAGE_ACCESS_TIME_BUCKETS;
 }
 
-static inline void vma_set_access_pid_bit(struct vm_area_struct *vma)
+static inline void vma_set_access_pid_bit(struct mm_area *vma)
 {
 	unsigned int pid_bit;
 
@@ -1872,7 +1872,7 @@ static inline bool cpupid_match_pid(struct task_struct *task, int cpupid)
 	return false;
 }
 
-static inline void vma_set_access_pid_bit(struct vm_area_struct *vma)
+static inline void vma_set_access_pid_bit(struct mm_area *vma)
 {
 }
 static inline bool folio_use_access_time(struct folio *folio)
@@ -2042,7 +2042,7 @@ static inline bool folio_maybe_dma_pinned(struct folio *folio)
  *
  * The caller has to hold the PT lock and the vma->vm_mm->->write_protect_seq.
  */
-static inline bool folio_needs_cow_for_dma(struct vm_area_struct *vma,
+static inline bool folio_needs_cow_for_dma(struct mm_area *vma,
 					  struct folio *folio)
 {
 	VM_BUG_ON(!(raw_read_seqcount(&vma->vm_mm->write_protect_seq) & 1));
@@ -2445,26 +2445,26 @@ static inline bool can_do_mlock(void) { return false; }
 extern int user_shm_lock(size_t, struct ucounts *);
 extern void user_shm_unlock(size_t, struct ucounts *);
 
-struct folio *vm_normal_folio(struct vm_area_struct *vma, unsigned long addr,
+struct folio *vm_normal_folio(struct mm_area *vma, unsigned long addr,
 			     pte_t pte);
-struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr,
+struct page *vm_normal_page(struct mm_area *vma, unsigned long addr,
 			     pte_t pte);
-struct folio *vm_normal_folio_pmd(struct vm_area_struct *vma,
+struct folio *vm_normal_folio_pmd(struct mm_area *vma,
 				  unsigned long addr, pmd_t pmd);
-struct page *vm_normal_page_pmd(struct vm_area_struct *vma, unsigned long addr,
+struct page *vm_normal_page_pmd(struct mm_area *vma, unsigned long addr,
 				pmd_t pmd);
 
-void zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
+void zap_vma_ptes(struct mm_area *vma, unsigned long address,
 		  unsigned long size);
-void zap_page_range_single(struct vm_area_struct *vma, unsigned long address,
+void zap_page_range_single(struct mm_area *vma, unsigned long address,
 			   unsigned long size, struct zap_details *details);
-static inline void zap_vma_pages(struct vm_area_struct *vma)
+static inline void zap_vma_pages(struct mm_area *vma)
 {
 	zap_page_range_single(vma, vma->vm_start,
 			      vma->vm_end - vma->vm_start, NULL);
 }
 void unmap_vmas(struct mmu_gather *tlb, struct ma_state *mas,
-		struct vm_area_struct *start_vma, unsigned long start,
+		struct mm_area *start_vma, unsigned long start,
 		unsigned long end, unsigned long tree_end, bool mm_wr_locked);
 
 struct mmu_notifier_range;
@@ -2472,17 +2472,17 @@ struct mmu_notifier_range;
 void free_pgd_range(struct mmu_gather *tlb, unsigned long addr,
 		unsigned long end, unsigned long floor, unsigned long ceiling);
 int
-copy_page_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma);
-int generic_access_phys(struct vm_area_struct *vma, unsigned long addr,
+copy_page_range(struct mm_area *dst_vma, struct mm_area *src_vma);
+int generic_access_phys(struct mm_area *vma, unsigned long addr,
 			void *buf, int len, int write);
 
 struct follow_pfnmap_args {
 	/**
 	 * Inputs:
-	 * @vma: Pointer to @vm_area_struct struct
+	 * @vma: Pointer to @mm_area struct
 	 * @address: the virtual address to walk
 	 */
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long address;
 	/**
 	 * Internals:
@@ -2516,11 +2516,11 @@ void truncate_pagecache_range(struct inode *inode, loff_t offset, loff_t end);
 int generic_error_remove_folio(struct address_space *mapping,
 		struct folio *folio);
 
-struct vm_area_struct *lock_mm_and_find_vma(struct mm_struct *mm,
+struct mm_area *lock_mm_and_find_vma(struct mm_struct *mm,
 		unsigned long address, struct pt_regs *regs);
 
 #ifdef CONFIG_MMU
-extern vm_fault_t handle_mm_fault(struct vm_area_struct *vma,
+extern vm_fault_t handle_mm_fault(struct mm_area *vma,
 				  unsigned long address, unsigned int flags,
 				  struct pt_regs *regs);
 extern int fixup_user_fault(struct mm_struct *mm,
@@ -2531,7 +2531,7 @@ void unmap_mapping_pages(struct address_space *mapping,
 void unmap_mapping_range(struct address_space *mapping,
 		loff_t const holebegin, loff_t const holelen, int even_cows);
 #else
-static inline vm_fault_t handle_mm_fault(struct vm_area_struct *vma,
+static inline vm_fault_t handle_mm_fault(struct mm_area *vma,
 					 unsigned long address, unsigned int flags,
 					 struct pt_regs *regs)
 {
@@ -2558,7 +2558,7 @@ static inline void unmap_shared_mapping_range(struct address_space *mapping,
 	unmap_mapping_range(mapping, holebegin, holelen, 0);
 }
 
-static inline struct vm_area_struct *vma_lookup(struct mm_struct *mm,
+static inline struct mm_area *vma_lookup(struct mm_struct *mm,
 						unsigned long addr);
 
 extern int access_process_vm(struct task_struct *tsk, unsigned long addr,
@@ -2586,10 +2586,10 @@ long pin_user_pages_remote(struct mm_struct *mm,
 static inline struct page *get_user_page_vma_remote(struct mm_struct *mm,
 						    unsigned long addr,
 						    int gup_flags,
-						    struct vm_area_struct **vmap)
+						    struct mm_area **vmap)
 {
 	struct page *page;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int got;
 
 	if (WARN_ON_ONCE(unlikely(gup_flags & FOLL_NOWAIT)))
@@ -2663,13 +2663,13 @@ int get_cmdline(struct task_struct *task, char *buffer, int buflen);
 #define  MM_CP_UFFD_WP_ALL                 (MM_CP_UFFD_WP | \
 					    MM_CP_UFFD_WP_RESOLVE)
 
-bool can_change_pte_writable(struct vm_area_struct *vma, unsigned long addr,
+bool can_change_pte_writable(struct mm_area *vma, unsigned long addr,
 			     pte_t pte);
 extern long change_protection(struct mmu_gather *tlb,
-			      struct vm_area_struct *vma, unsigned long start,
+			      struct mm_area *vma, unsigned long start,
 			      unsigned long end, unsigned long cp_flags);
 extern int mprotect_fixup(struct vma_iterator *vmi, struct mmu_gather *tlb,
-	  struct vm_area_struct *vma, struct vm_area_struct **pprev,
+	  struct mm_area *vma, struct mm_area **pprev,
 	  unsigned long start, unsigned long end, unsigned long newflags);
 
 /*
@@ -3360,16 +3360,16 @@ extern atomic_long_t mmap_pages_allocated;
 extern int nommu_shrink_inode_mappings(struct inode *, size_t, size_t);
 
 /* interval_tree.c */
-void vma_interval_tree_insert(struct vm_area_struct *node,
+void vma_interval_tree_insert(struct mm_area *node,
 			      struct rb_root_cached *root);
-void vma_interval_tree_insert_after(struct vm_area_struct *node,
-				    struct vm_area_struct *prev,
+void vma_interval_tree_insert_after(struct mm_area *node,
+				    struct mm_area *prev,
 				    struct rb_root_cached *root);
-void vma_interval_tree_remove(struct vm_area_struct *node,
+void vma_interval_tree_remove(struct mm_area *node,
 			      struct rb_root_cached *root);
-struct vm_area_struct *vma_interval_tree_iter_first(struct rb_root_cached *root,
+struct mm_area *vma_interval_tree_iter_first(struct rb_root_cached *root,
 				unsigned long start, unsigned long last);
-struct vm_area_struct *vma_interval_tree_iter_next(struct vm_area_struct *node,
+struct mm_area *vma_interval_tree_iter_next(struct mm_area *node,
 				unsigned long start, unsigned long last);
 
 #define vma_interval_tree_foreach(vma, root, start, last)		\
@@ -3395,10 +3395,10 @@ void anon_vma_interval_tree_verify(struct anon_vma_chain *node);
 
 /* mmap.c */
 extern int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin);
-extern int insert_vm_struct(struct mm_struct *, struct vm_area_struct *);
+extern int insert_vm_struct(struct mm_struct *, struct mm_area *);
 extern void exit_mmap(struct mm_struct *);
-int relocate_vma_down(struct vm_area_struct *vma, unsigned long shift);
-bool mmap_read_lock_maybe_expand(struct mm_struct *mm, struct vm_area_struct *vma,
+int relocate_vma_down(struct mm_area *vma, unsigned long shift);
+bool mmap_read_lock_maybe_expand(struct mm_struct *mm, struct mm_area *vma,
 				 unsigned long addr, bool write);
 
 static inline int check_data_rlimit(unsigned long rlim,
@@ -3426,9 +3426,9 @@ extern struct file *get_task_exe_file(struct task_struct *task);
 extern bool may_expand_vm(struct mm_struct *, vm_flags_t, unsigned long npages);
 extern void vm_stat_account(struct mm_struct *, vm_flags_t, long npages);
 
-extern bool vma_is_special_mapping(const struct vm_area_struct *vma,
+extern bool vma_is_special_mapping(const struct mm_area *vma,
 				   const struct vm_special_mapping *sm);
-extern struct vm_area_struct *_install_special_mapping(struct mm_struct *mm,
+extern struct mm_area *_install_special_mapping(struct mm_struct *mm,
 				   unsigned long addr, unsigned long len,
 				   unsigned long flags,
 				   const struct vm_special_mapping *spec);
@@ -3454,7 +3454,7 @@ extern unsigned long do_mmap(struct file *file, unsigned long addr,
 extern int do_vmi_munmap(struct vma_iterator *vmi, struct mm_struct *mm,
 			 unsigned long start, size_t len, struct list_head *uf,
 			 bool unlock);
-int do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma,
+int do_vmi_align_munmap(struct vma_iterator *vmi, struct mm_area *vma,
 		    struct mm_struct *mm, unsigned long start,
 		    unsigned long end, struct list_head *uf, bool unlock);
 extern int do_munmap(struct mm_struct *, unsigned long, size_t,
@@ -3507,19 +3507,19 @@ extern vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf);
 
 extern unsigned long stack_guard_gap;
 /* Generic expand stack which grows the stack according to GROWS{UP,DOWN} */
-int expand_stack_locked(struct vm_area_struct *vma, unsigned long address);
-struct vm_area_struct *expand_stack(struct mm_struct * mm, unsigned long addr);
+int expand_stack_locked(struct mm_area *vma, unsigned long address);
+struct mm_area *expand_stack(struct mm_struct * mm, unsigned long addr);
 
 /* Look up the first VMA which satisfies  addr < vm_end,  NULL if none. */
-extern struct vm_area_struct * find_vma(struct mm_struct * mm, unsigned long addr);
-extern struct vm_area_struct * find_vma_prev(struct mm_struct * mm, unsigned long addr,
-					     struct vm_area_struct **pprev);
+extern struct mm_area * find_vma(struct mm_struct * mm, unsigned long addr);
+extern struct mm_area * find_vma_prev(struct mm_struct * mm, unsigned long addr,
+					     struct mm_area **pprev);
 
 /*
  * Look up the first VMA which intersects the interval [start_addr, end_addr)
  * NULL if none.  Assume start_addr < end_addr.
  */
-struct vm_area_struct *find_vma_intersection(struct mm_struct *mm,
+struct mm_area *find_vma_intersection(struct mm_struct *mm,
 			unsigned long start_addr, unsigned long end_addr);
 
 /**
@@ -3527,15 +3527,15 @@ struct vm_area_struct *find_vma_intersection(struct mm_struct *mm,
  * @mm: The process address space.
  * @addr: The user address.
  *
- * Return: The vm_area_struct at the given address, %NULL otherwise.
+ * Return: The mm_area at the given address, %NULL otherwise.
  */
 static inline
-struct vm_area_struct *vma_lookup(struct mm_struct *mm, unsigned long addr)
+struct mm_area *vma_lookup(struct mm_struct *mm, unsigned long addr)
 {
 	return mtree_load(&mm->mm_mt, addr);
 }
 
-static inline unsigned long stack_guard_start_gap(struct vm_area_struct *vma)
+static inline unsigned long stack_guard_start_gap(struct mm_area *vma)
 {
 	if (vma->vm_flags & VM_GROWSDOWN)
 		return stack_guard_gap;
@@ -3547,7 +3547,7 @@ static inline unsigned long stack_guard_start_gap(struct vm_area_struct *vma)
 	return 0;
 }
 
-static inline unsigned long vm_start_gap(struct vm_area_struct *vma)
+static inline unsigned long vm_start_gap(struct mm_area *vma)
 {
 	unsigned long gap = stack_guard_start_gap(vma);
 	unsigned long vm_start = vma->vm_start;
@@ -3558,7 +3558,7 @@ static inline unsigned long vm_start_gap(struct vm_area_struct *vma)
 	return vm_start;
 }
 
-static inline unsigned long vm_end_gap(struct vm_area_struct *vma)
+static inline unsigned long vm_end_gap(struct mm_area *vma)
 {
 	unsigned long vm_end = vma->vm_end;
 
@@ -3570,16 +3570,16 @@ static inline unsigned long vm_end_gap(struct vm_area_struct *vma)
 	return vm_end;
 }
 
-static inline unsigned long vma_pages(struct vm_area_struct *vma)
+static inline unsigned long vma_pages(struct mm_area *vma)
 {
 	return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
 }
 
 /* Look up the first VMA which exactly match the interval vm_start ... vm_end */
-static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm,
+static inline struct mm_area *find_exact_vma(struct mm_struct *mm,
 				unsigned long vm_start, unsigned long vm_end)
 {
-	struct vm_area_struct *vma = vma_lookup(mm, vm_start);
+	struct mm_area *vma = vma_lookup(mm, vm_start);
 
 	if (vma && (vma->vm_start != vm_start || vma->vm_end != vm_end))
 		vma = NULL;
@@ -3587,7 +3587,7 @@ static inline struct vm_area_struct *find_exact_vma(struct mm_struct *mm,
 	return vma;
 }
 
-static inline bool range_in_vma(struct vm_area_struct *vma,
+static inline bool range_in_vma(struct mm_area *vma,
 				unsigned long start, unsigned long end)
 {
 	return (vma && vma->vm_start <= start && end <= vma->vm_end);
@@ -3595,51 +3595,51 @@ static inline bool range_in_vma(struct vm_area_struct *vma,
 
 #ifdef CONFIG_MMU
 pgprot_t vm_get_page_prot(unsigned long vm_flags);
-void vma_set_page_prot(struct vm_area_struct *vma);
+void vma_set_page_prot(struct mm_area *vma);
 #else
 static inline pgprot_t vm_get_page_prot(unsigned long vm_flags)
 {
 	return __pgprot(0);
 }
-static inline void vma_set_page_prot(struct vm_area_struct *vma)
+static inline void vma_set_page_prot(struct mm_area *vma)
 {
 	vma->vm_page_prot = vm_get_page_prot(vma->vm_flags);
 }
 #endif
 
-void vma_set_file(struct vm_area_struct *vma, struct file *file);
+void vma_set_file(struct mm_area *vma, struct file *file);
 
 #ifdef CONFIG_NUMA_BALANCING
-unsigned long change_prot_numa(struct vm_area_struct *vma,
+unsigned long change_prot_numa(struct mm_area *vma,
 			unsigned long start, unsigned long end);
 #endif
 
-struct vm_area_struct *find_extend_vma_locked(struct mm_struct *,
+struct mm_area *find_extend_vma_locked(struct mm_struct *,
 		unsigned long addr);
-int remap_pfn_range(struct vm_area_struct *, unsigned long addr,
+int remap_pfn_range(struct mm_area *, unsigned long addr,
 			unsigned long pfn, unsigned long size, pgprot_t);
-int remap_pfn_range_notrack(struct vm_area_struct *vma, unsigned long addr,
+int remap_pfn_range_notrack(struct mm_area *vma, unsigned long addr,
 		unsigned long pfn, unsigned long size, pgprot_t prot);
-int vm_insert_page(struct vm_area_struct *, unsigned long addr, struct page *);
-int vm_insert_pages(struct vm_area_struct *vma, unsigned long addr,
+int vm_insert_page(struct mm_area *, unsigned long addr, struct page *);
+int vm_insert_pages(struct mm_area *vma, unsigned long addr,
 			struct page **pages, unsigned long *num);
-int vm_map_pages(struct vm_area_struct *vma, struct page **pages,
+int vm_map_pages(struct mm_area *vma, struct page **pages,
 				unsigned long num);
-int vm_map_pages_zero(struct vm_area_struct *vma, struct page **pages,
+int vm_map_pages_zero(struct mm_area *vma, struct page **pages,
 				unsigned long num);
 vm_fault_t vmf_insert_page_mkwrite(struct vm_fault *vmf, struct page *page,
 			bool write);
-vm_fault_t vmf_insert_pfn(struct vm_area_struct *vma, unsigned long addr,
+vm_fault_t vmf_insert_pfn(struct mm_area *vma, unsigned long addr,
 			unsigned long pfn);
-vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr,
+vm_fault_t vmf_insert_pfn_prot(struct mm_area *vma, unsigned long addr,
 			unsigned long pfn, pgprot_t pgprot);
-vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr,
+vm_fault_t vmf_insert_mixed(struct mm_area *vma, unsigned long addr,
 			pfn_t pfn);
-vm_fault_t vmf_insert_mixed_mkwrite(struct vm_area_struct *vma,
+vm_fault_t vmf_insert_mixed_mkwrite(struct mm_area *vma,
 		unsigned long addr, pfn_t pfn);
-int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long len);
+int vm_iomap_memory(struct mm_area *vma, phys_addr_t start, unsigned long len);
 
-static inline vm_fault_t vmf_insert_page(struct vm_area_struct *vma,
+static inline vm_fault_t vmf_insert_page(struct mm_area *vma,
 				unsigned long addr, struct page *page)
 {
 	int err = vm_insert_page(vma, addr, page);
@@ -3653,7 +3653,7 @@ static inline vm_fault_t vmf_insert_page(struct vm_area_struct *vma,
 }
 
 #ifndef io_remap_pfn_range
-static inline int io_remap_pfn_range(struct vm_area_struct *vma,
+static inline int io_remap_pfn_range(struct mm_area *vma,
 				     unsigned long addr, unsigned long pfn,
 				     unsigned long size, pgprot_t prot)
 {
@@ -3703,7 +3703,7 @@ static inline int vm_fault_to_errno(vm_fault_t vm_fault, int foll_flags)
  * Indicates whether GUP can follow a PROT_NONE mapped page, or whether
  * a (NUMA hinting) fault is required.
  */
-static inline bool gup_can_follow_protnone(struct vm_area_struct *vma,
+static inline bool gup_can_follow_protnone(struct mm_area *vma,
 					   unsigned int flags)
 {
 	/*
@@ -3872,11 +3872,11 @@ static inline void clear_page_guard(struct zone *zone, struct page *page,
 #endif	/* CONFIG_DEBUG_PAGEALLOC */
 
 #ifdef __HAVE_ARCH_GATE_AREA
-extern struct vm_area_struct *get_gate_vma(struct mm_struct *mm);
+extern struct mm_area *get_gate_vma(struct mm_struct *mm);
 extern int in_gate_area_no_mm(unsigned long addr);
 extern int in_gate_area(struct mm_struct *mm, unsigned long addr);
 #else
-static inline struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
+static inline struct mm_area *get_gate_vma(struct mm_struct *mm)
 {
 	return NULL;
 }
@@ -3897,7 +3897,7 @@ void drop_slab(void);
 extern int randomize_va_space;
 #endif
 
-const char * arch_vma_name(struct vm_area_struct *vma);
+const char * arch_vma_name(struct mm_area *vma);
 #ifdef CONFIG_MMU
 void print_vma_addr(char *prefix, unsigned long rip);
 #else
@@ -4117,14 +4117,14 @@ enum mf_action_page_type {
 void folio_zero_user(struct folio *folio, unsigned long addr_hint);
 int copy_user_large_folio(struct folio *dst, struct folio *src,
 			  unsigned long addr_hint,
-			  struct vm_area_struct *vma);
+			  struct mm_area *vma);
 long copy_folio_from_user(struct folio *dst_folio,
 			   const void __user *usr_src,
 			   bool allow_pagefault);
 
 /**
  * vma_is_special_huge - Are transhuge page-table entries considered special?
- * @vma: Pointer to the struct vm_area_struct to consider
+ * @vma: Pointer to the struct mm_area to consider
  *
  * Whether transhuge page-table entries are considered "special" following
  * the definition in vm_normal_page().
@@ -4132,7 +4132,7 @@ long copy_folio_from_user(struct folio *dst_folio,
  * Return: true if transhuge page-table entries should be considered special,
  * false otherwise.
  */
-static inline bool vma_is_special_huge(const struct vm_area_struct *vma)
+static inline bool vma_is_special_huge(const struct mm_area *vma)
 {
 	return vma_is_dax(vma) || (vma->vm_file &&
 				   (vma->vm_flags & (VM_PFNMAP | VM_MIXEDMAP)));
@@ -4201,8 +4201,8 @@ static inline bool pfn_is_unaccepted_memory(unsigned long pfn)
 	return range_contains_unaccepted_memory(pfn << PAGE_SHIFT, PAGE_SIZE);
 }
 
-void vma_pgtable_walk_begin(struct vm_area_struct *vma);
-void vma_pgtable_walk_end(struct vm_area_struct *vma);
+void vma_pgtable_walk_begin(struct mm_area *vma);
+void vma_pgtable_walk_end(struct mm_area *vma);
 
 int reserve_mem_find_by_name(const char *name, phys_addr_t *start, phys_addr_t *size);
 int reserve_mem_release_by_name(const char *name);
diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h
index f9157a0c42a5..7b5bcca96464 100644
--- a/include/linux/mm_inline.h
+++ b/include/linux/mm_inline.h
@@ -404,8 +404,8 @@ struct anon_vma_name *anon_vma_name_reuse(struct anon_vma_name *anon_name)
 	return anon_vma_name_alloc(anon_name->name);
 }
 
-static inline void dup_anon_vma_name(struct vm_area_struct *orig_vma,
-				     struct vm_area_struct *new_vma)
+static inline void dup_anon_vma_name(struct mm_area *orig_vma,
+				     struct mm_area *new_vma)
 {
 	struct anon_vma_name *anon_name = anon_vma_name(orig_vma);
 
@@ -413,7 +413,7 @@ static inline void dup_anon_vma_name(struct vm_area_struct *orig_vma,
 		new_vma->anon_name = anon_vma_name_reuse(anon_name);
 }
 
-static inline void free_anon_vma_name(struct vm_area_struct *vma)
+static inline void free_anon_vma_name(struct mm_area *vma)
 {
 	/*
 	 * Not using anon_vma_name because it generates a warning if mmap_lock
@@ -435,9 +435,9 @@ static inline bool anon_vma_name_eq(struct anon_vma_name *anon_name1,
 #else /* CONFIG_ANON_VMA_NAME */
 static inline void anon_vma_name_get(struct anon_vma_name *anon_name) {}
 static inline void anon_vma_name_put(struct anon_vma_name *anon_name) {}
-static inline void dup_anon_vma_name(struct vm_area_struct *orig_vma,
-				     struct vm_area_struct *new_vma) {}
-static inline void free_anon_vma_name(struct vm_area_struct *vma) {}
+static inline void dup_anon_vma_name(struct mm_area *orig_vma,
+				     struct mm_area *new_vma) {}
+static inline void free_anon_vma_name(struct mm_area *vma) {}
 
 static inline bool anon_vma_name_eq(struct anon_vma_name *anon_name1,
 				    struct anon_vma_name *anon_name2)
@@ -538,7 +538,7 @@ static inline bool mm_tlb_flush_nested(struct mm_struct *mm)
  * The caller should insert a new pte created with make_pte_marker().
  */
 static inline pte_marker copy_pte_marker(
-		swp_entry_t entry, struct vm_area_struct *dst_vma)
+		swp_entry_t entry, struct mm_area *dst_vma)
 {
 	pte_marker srcm = pte_marker_get(entry);
 	/* Always copy error entries. */
@@ -565,7 +565,7 @@ static inline pte_marker copy_pte_marker(
  * Returns true if an uffd-wp pte was installed, false otherwise.
  */
 static inline bool
-pte_install_uffd_wp_if_needed(struct vm_area_struct *vma, unsigned long addr,
+pte_install_uffd_wp_if_needed(struct mm_area *vma, unsigned long addr,
 			      pte_t *pte, pte_t pteval)
 {
 #ifdef CONFIG_PTE_MARKER_UFFD_WP
@@ -603,7 +603,7 @@ pte_install_uffd_wp_if_needed(struct vm_area_struct *vma, unsigned long addr,
 	return false;
 }
 
-static inline bool vma_has_recency(struct vm_area_struct *vma)
+static inline bool vma_has_recency(struct mm_area *vma)
 {
 	if (vma->vm_flags & (VM_SEQ_READ | VM_RAND_READ))
 		return false;
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 56d07edd01f9..185fdf91bda1 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -710,11 +710,11 @@ struct anon_vma_name {
  * either keep holding the lock while using the returned pointer or it should
  * raise anon_vma_name refcount before releasing the lock.
  */
-struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma);
+struct anon_vma_name *anon_vma_name(struct mm_area *vma);
 struct anon_vma_name *anon_vma_name_alloc(const char *name);
 void anon_vma_name_free(struct kref *kref);
 #else /* CONFIG_ANON_VMA_NAME */
-static inline struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma)
+static inline struct anon_vma_name *anon_vma_name(struct mm_area *vma)
 {
 	return NULL;
 }
@@ -774,9 +774,9 @@ struct vma_numab_state {
  * getting a stable reference.
  *
  * WARNING: when adding new members, please update vm_area_init_from() to copy
- * them during vm_area_struct content duplication.
+ * them during mm_area content duplication.
  */
-struct vm_area_struct {
+struct mm_area {
 	/* The first cache line has the info for VMA tree walking. */
 
 	union {
@@ -1488,14 +1488,14 @@ struct vm_special_mapping {
 	 * on the special mapping.  If used, .pages is not checked.
 	 */
 	vm_fault_t (*fault)(const struct vm_special_mapping *sm,
-				struct vm_area_struct *vma,
+				struct mm_area *vma,
 				struct vm_fault *vmf);
 
 	int (*mremap)(const struct vm_special_mapping *sm,
-		     struct vm_area_struct *new_vma);
+		     struct mm_area *new_vma);
 
 	void (*close)(const struct vm_special_mapping *sm,
-		      struct vm_area_struct *vma);
+		      struct mm_area *vma);
 };
 
 enum tlb_flush_reason {
diff --git a/include/linux/mmdebug.h b/include/linux/mmdebug.h
index a0a3894900ed..b713e4921bb8 100644
--- a/include/linux/mmdebug.h
+++ b/include/linux/mmdebug.h
@@ -6,13 +6,13 @@
 #include <linux/stringify.h>
 
 struct page;
-struct vm_area_struct;
+struct mm_area;
 struct mm_struct;
 struct vma_iterator;
 struct vma_merge_struct;
 
 void dump_page(const struct page *page, const char *reason);
-void dump_vma(const struct vm_area_struct *vma);
+void dump_vma(const struct mm_area *vma);
 void dump_mm(const struct mm_struct *mm);
 void dump_vmg(const struct vma_merge_struct *vmg, const char *reason);
 void vma_iter_dump_tree(const struct vma_iterator *vmi);
diff --git a/include/linux/mmu_notifier.h b/include/linux/mmu_notifier.h
index bc2402a45741..1c83061bf690 100644
--- a/include/linux/mmu_notifier.h
+++ b/include/linux/mmu_notifier.h
@@ -518,7 +518,7 @@ static inline void mmu_notifier_range_init_owner(
 #define ptep_clear_flush_young_notify(__vma, __address, __ptep)		\
 ({									\
 	int __young;							\
-	struct vm_area_struct *___vma = __vma;				\
+	struct mm_area *___vma = __vma;				\
 	unsigned long ___address = __address;				\
 	__young = ptep_clear_flush_young(___vma, ___address, __ptep);	\
 	__young |= mmu_notifier_clear_flush_young(___vma->vm_mm,	\
@@ -531,7 +531,7 @@ static inline void mmu_notifier_range_init_owner(
 #define pmdp_clear_flush_young_notify(__vma, __address, __pmdp)		\
 ({									\
 	int __young;							\
-	struct vm_area_struct *___vma = __vma;				\
+	struct mm_area *___vma = __vma;				\
 	unsigned long ___address = __address;				\
 	__young = pmdp_clear_flush_young(___vma, ___address, __pmdp);	\
 	__young |= mmu_notifier_clear_flush_young(___vma->vm_mm,	\
@@ -544,7 +544,7 @@ static inline void mmu_notifier_range_init_owner(
 #define ptep_clear_young_notify(__vma, __address, __ptep)		\
 ({									\
 	int __young;							\
-	struct vm_area_struct *___vma = __vma;				\
+	struct mm_area *___vma = __vma;				\
 	unsigned long ___address = __address;				\
 	__young = ptep_test_and_clear_young(___vma, ___address, __ptep);\
 	__young |= mmu_notifier_clear_young(___vma->vm_mm, ___address,	\
@@ -555,7 +555,7 @@ static inline void mmu_notifier_range_init_owner(
 #define pmdp_clear_young_notify(__vma, __address, __pmdp)		\
 ({									\
 	int __young;							\
-	struct vm_area_struct *___vma = __vma;				\
+	struct mm_area *___vma = __vma;				\
 	unsigned long ___address = __address;				\
 	__young = pmdp_test_and_clear_young(___vma, ___address, __pmdp);\
 	__young |= mmu_notifier_clear_young(___vma->vm_mm, ___address,	\
diff --git a/include/linux/net.h b/include/linux/net.h
index 0ff950eecc6b..501f966667be 100644
--- a/include/linux/net.h
+++ b/include/linux/net.h
@@ -147,7 +147,7 @@ typedef struct {
 	int error;
 } read_descriptor_t;
 
-struct vm_area_struct;
+struct mm_area;
 struct page;
 struct sockaddr;
 struct msghdr;
@@ -208,7 +208,7 @@ struct proto_ops {
 	int		(*recvmsg)   (struct socket *sock, struct msghdr *m,
 				      size_t total_len, int flags);
 	int		(*mmap)	     (struct file *file, struct socket *sock,
-				      struct vm_area_struct * vma);
+				      struct mm_area * vma);
 	ssize_t 	(*splice_read)(struct socket *sock,  loff_t *ppos,
 				       struct pipe_inode_info *pipe, size_t len, unsigned int flags);
 	void		(*splice_eof)(struct socket *sock);
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index 26baa78f1ca7..1848be69048a 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -1043,7 +1043,7 @@ static inline pgoff_t folio_pgoff(struct folio *folio)
 	return folio->index;
 }
 
-static inline pgoff_t linear_page_index(struct vm_area_struct *vma,
+static inline pgoff_t linear_page_index(struct mm_area *vma,
 					unsigned long address)
 {
 	pgoff_t pgoff;
diff --git a/include/linux/pagewalk.h b/include/linux/pagewalk.h
index 9700a29f8afb..026bb21ede0e 100644
--- a/include/linux/pagewalk.h
+++ b/include/linux/pagewalk.h
@@ -120,7 +120,7 @@ struct mm_walk {
 	const struct mm_walk_ops *ops;
 	struct mm_struct *mm;
 	pgd_t *pgd;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	enum page_walk_action action;
 	bool no_vma;
 	void *private;
@@ -133,10 +133,10 @@ int walk_page_range_novma(struct mm_struct *mm, unsigned long start,
 			  unsigned long end, const struct mm_walk_ops *ops,
 			  pgd_t *pgd,
 			  void *private);
-int walk_page_range_vma(struct vm_area_struct *vma, unsigned long start,
+int walk_page_range_vma(struct mm_area *vma, unsigned long start,
 			unsigned long end, const struct mm_walk_ops *ops,
 			void *private);
-int walk_page_vma(struct vm_area_struct *vma, const struct mm_walk_ops *ops,
+int walk_page_vma(struct mm_area *vma, const struct mm_walk_ops *ops,
 		void *private);
 int walk_page_mapping(struct address_space *mapping, pgoff_t first_index,
 		      pgoff_t nr, const struct mm_walk_ops *ops,
@@ -185,12 +185,12 @@ struct folio_walk {
 		pmd_t pmd;
 	};
 	/* private */
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	spinlock_t *ptl;
 };
 
 struct folio *folio_walk_start(struct folio_walk *fw,
-		struct vm_area_struct *vma, unsigned long addr,
+		struct mm_area *vma, unsigned long addr,
 		folio_walk_flags_t flags);
 
 #define folio_walk_end(__fw, __vma) do { \
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 0e8e3fd77e96..343fcd42b066 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -2103,7 +2103,7 @@ pci_alloc_irq_vectors(struct pci_dev *dev, unsigned int min_vecs,
  *
  */
 int pci_mmap_resource_range(struct pci_dev *dev, int bar,
-			    struct vm_area_struct *vma,
+			    struct mm_area *vma,
 			    enum pci_mmap_state mmap_state, int write_combine);
 
 #ifndef arch_can_pci_mmap_wc
@@ -2114,7 +2114,7 @@ int pci_mmap_resource_range(struct pci_dev *dev, int bar,
 #define arch_can_pci_mmap_io()		0
 #define pci_iobar_pfn(pdev, bar, vma) (-EINVAL)
 #else
-int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct vm_area_struct *vma);
+int pci_iobar_pfn(struct pci_dev *pdev, int bar, struct mm_area *vma);
 #endif
 
 #ifndef pci_root_bus_fwnode
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index 5a9bf15d4461..cb7f59821923 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -1596,7 +1596,7 @@ static inline void perf_event_task_sched_out(struct task_struct *prev,
 		__perf_event_task_sched_out(prev, next);
 }
 
-extern void perf_event_mmap(struct vm_area_struct *vma);
+extern void perf_event_mmap(struct mm_area *vma);
 
 extern void perf_event_ksymbol(u16 ksym_type, u64 addr, u32 len,
 			       bool unregister, const char *sym);
@@ -1889,7 +1889,7 @@ perf_sw_event(u32 event_id, u64 nr, struct pt_regs *regs, u64 addr)	{ }
 static inline void
 perf_bp_event(struct perf_event *event, void *data)			{ }
 
-static inline void perf_event_mmap(struct vm_area_struct *vma)		{ }
+static inline void perf_event_mmap(struct mm_area *vma)		{ }
 
 typedef int (perf_ksymbol_get_name_f)(char *name, int name_len, void *data);
 static inline void perf_event_ksymbol(u16 ksym_type, u64 addr, u32 len,
diff --git a/include/linux/pgtable.h b/include/linux/pgtable.h
index e2b705c14945..eb50af52018b 100644
--- a/include/linux/pgtable.h
+++ b/include/linux/pgtable.h
@@ -303,28 +303,28 @@ static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
 #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1)
 
 #ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
-extern int ptep_set_access_flags(struct vm_area_struct *vma,
+extern int ptep_set_access_flags(struct mm_area *vma,
 				 unsigned long address, pte_t *ptep,
 				 pte_t entry, int dirty);
 #endif
 
 #ifndef __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-extern int pmdp_set_access_flags(struct vm_area_struct *vma,
+extern int pmdp_set_access_flags(struct mm_area *vma,
 				 unsigned long address, pmd_t *pmdp,
 				 pmd_t entry, int dirty);
-extern int pudp_set_access_flags(struct vm_area_struct *vma,
+extern int pudp_set_access_flags(struct mm_area *vma,
 				 unsigned long address, pud_t *pudp,
 				 pud_t entry, int dirty);
 #else
-static inline int pmdp_set_access_flags(struct vm_area_struct *vma,
+static inline int pmdp_set_access_flags(struct mm_area *vma,
 					unsigned long address, pmd_t *pmdp,
 					pmd_t entry, int dirty)
 {
 	BUILD_BUG();
 	return 0;
 }
-static inline int pudp_set_access_flags(struct vm_area_struct *vma,
+static inline int pudp_set_access_flags(struct mm_area *vma,
 					unsigned long address, pud_t *pudp,
 					pud_t entry, int dirty)
 {
@@ -370,7 +370,7 @@ static inline pgd_t pgdp_get(pgd_t *pgdp)
 #endif
 
 #ifndef __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
-static inline int ptep_test_and_clear_young(struct vm_area_struct *vma,
+static inline int ptep_test_and_clear_young(struct mm_area *vma,
 					    unsigned long address,
 					    pte_t *ptep)
 {
@@ -386,7 +386,7 @@ static inline int ptep_test_and_clear_young(struct vm_area_struct *vma,
 
 #ifndef __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG
 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG)
-static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
+static inline int pmdp_test_and_clear_young(struct mm_area *vma,
 					    unsigned long address,
 					    pmd_t *pmdp)
 {
@@ -399,7 +399,7 @@ static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
 	return r;
 }
 #else
-static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
+static inline int pmdp_test_and_clear_young(struct mm_area *vma,
 					    unsigned long address,
 					    pmd_t *pmdp)
 {
@@ -410,20 +410,20 @@ static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
 #endif
 
 #ifndef __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
-int ptep_clear_flush_young(struct vm_area_struct *vma,
+int ptep_clear_flush_young(struct mm_area *vma,
 			   unsigned long address, pte_t *ptep);
 #endif
 
 #ifndef __HAVE_ARCH_PMDP_CLEAR_YOUNG_FLUSH
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-extern int pmdp_clear_flush_young(struct vm_area_struct *vma,
+extern int pmdp_clear_flush_young(struct mm_area *vma,
 				  unsigned long address, pmd_t *pmdp);
 #else
 /*
  * Despite relevant to THP only, this API is called from generic rmap code
  * under PageTransHuge(), hence needs a dummy implementation for !THP
  */
-static inline int pmdp_clear_flush_young(struct vm_area_struct *vma,
+static inline int pmdp_clear_flush_young(struct mm_area *vma,
 					 unsigned long address, pmd_t *pmdp)
 {
 	BUILD_BUG();
@@ -457,21 +457,21 @@ static inline bool arch_has_hw_pte_young(void)
 #endif
 
 #ifndef arch_check_zapped_pte
-static inline void arch_check_zapped_pte(struct vm_area_struct *vma,
+static inline void arch_check_zapped_pte(struct mm_area *vma,
 					 pte_t pte)
 {
 }
 #endif
 
 #ifndef arch_check_zapped_pmd
-static inline void arch_check_zapped_pmd(struct vm_area_struct *vma,
+static inline void arch_check_zapped_pmd(struct mm_area *vma,
 					 pmd_t pmd)
 {
 }
 #endif
 
 #ifndef arch_check_zapped_pud
-static inline void arch_check_zapped_pud(struct vm_area_struct *vma, pud_t pud)
+static inline void arch_check_zapped_pud(struct mm_area *vma, pud_t pud)
 {
 }
 #endif
@@ -507,7 +507,7 @@ static inline pte_t ptep_get_and_clear(struct mm_struct *mm,
  * Context: The caller holds the page table lock.  The PTEs map consecutive
  * pages that belong to the same folio.  The PTEs are all in the same PMD.
  */
-static inline void clear_young_dirty_ptes(struct vm_area_struct *vma,
+static inline void clear_young_dirty_ptes(struct mm_area *vma,
 					  unsigned long addr, pte_t *ptep,
 					  unsigned int nr, cydp_t flags)
 {
@@ -659,7 +659,7 @@ static inline pud_t pudp_huge_get_and_clear(struct mm_struct *mm,
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 #ifndef __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR_FULL
-static inline pmd_t pmdp_huge_get_and_clear_full(struct vm_area_struct *vma,
+static inline pmd_t pmdp_huge_get_and_clear_full(struct mm_area *vma,
 					    unsigned long address, pmd_t *pmdp,
 					    int full)
 {
@@ -668,7 +668,7 @@ static inline pmd_t pmdp_huge_get_and_clear_full(struct vm_area_struct *vma,
 #endif
 
 #ifndef __HAVE_ARCH_PUDP_HUGE_GET_AND_CLEAR_FULL
-static inline pud_t pudp_huge_get_and_clear_full(struct vm_area_struct *vma,
+static inline pud_t pudp_huge_get_and_clear_full(struct mm_area *vma,
 					    unsigned long address, pud_t *pudp,
 					    int full)
 {
@@ -766,13 +766,13 @@ static inline void clear_full_ptes(struct mm_struct *mm, unsigned long addr,
  * It is the difference with function update_mmu_cache.
  */
 #ifndef update_mmu_tlb_range
-static inline void update_mmu_tlb_range(struct vm_area_struct *vma,
+static inline void update_mmu_tlb_range(struct mm_area *vma,
 				unsigned long address, pte_t *ptep, unsigned int nr)
 {
 }
 #endif
 
-static inline void update_mmu_tlb(struct vm_area_struct *vma,
+static inline void update_mmu_tlb(struct mm_area *vma,
 				unsigned long address, pte_t *ptep)
 {
 	update_mmu_tlb_range(vma, address, ptep, 1);
@@ -823,29 +823,29 @@ static inline void clear_not_present_full_ptes(struct mm_struct *mm,
 #endif
 
 #ifndef __HAVE_ARCH_PTEP_CLEAR_FLUSH
-extern pte_t ptep_clear_flush(struct vm_area_struct *vma,
+extern pte_t ptep_clear_flush(struct mm_area *vma,
 			      unsigned long address,
 			      pte_t *ptep);
 #endif
 
 #ifndef __HAVE_ARCH_PMDP_HUGE_CLEAR_FLUSH
-extern pmd_t pmdp_huge_clear_flush(struct vm_area_struct *vma,
+extern pmd_t pmdp_huge_clear_flush(struct mm_area *vma,
 			      unsigned long address,
 			      pmd_t *pmdp);
-extern pud_t pudp_huge_clear_flush(struct vm_area_struct *vma,
+extern pud_t pudp_huge_clear_flush(struct mm_area *vma,
 			      unsigned long address,
 			      pud_t *pudp);
 #endif
 
 #ifndef pte_mkwrite
-static inline pte_t pte_mkwrite(pte_t pte, struct vm_area_struct *vma)
+static inline pte_t pte_mkwrite(pte_t pte, struct mm_area *vma)
 {
 	return pte_mkwrite_novma(pte);
 }
 #endif
 
 #if defined(CONFIG_ARCH_WANT_PMD_MKWRITE) && !defined(pmd_mkwrite)
-static inline pmd_t pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma)
+static inline pmd_t pmd_mkwrite(pmd_t pmd, struct mm_area *vma)
 {
 	return pmd_mkwrite_novma(pmd);
 }
@@ -945,10 +945,10 @@ static inline void pudp_set_wrprotect(struct mm_struct *mm,
 
 #ifndef pmdp_collapse_flush
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-extern pmd_t pmdp_collapse_flush(struct vm_area_struct *vma,
+extern pmd_t pmdp_collapse_flush(struct mm_area *vma,
 				 unsigned long address, pmd_t *pmdp);
 #else
-static inline pmd_t pmdp_collapse_flush(struct vm_area_struct *vma,
+static inline pmd_t pmdp_collapse_flush(struct mm_area *vma,
 					unsigned long address,
 					pmd_t *pmdp)
 {
@@ -978,7 +978,7 @@ extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
  * architecture that doesn't have hardware dirty/accessed bits. In this case we
  * can't race with CPU which sets these bits and non-atomic approach is fine.
  */
-static inline pmd_t generic_pmdp_establish(struct vm_area_struct *vma,
+static inline pmd_t generic_pmdp_establish(struct mm_area *vma,
 		unsigned long address, pmd_t *pmdp, pmd_t pmd)
 {
 	pmd_t old_pmd = *pmdp;
@@ -988,7 +988,7 @@ static inline pmd_t generic_pmdp_establish(struct vm_area_struct *vma,
 #endif
 
 #ifndef __HAVE_ARCH_PMDP_INVALIDATE
-extern pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
+extern pmd_t pmdp_invalidate(struct mm_area *vma, unsigned long address,
 			    pmd_t *pmdp);
 #endif
 
@@ -1008,7 +1008,7 @@ extern pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
  * to batch these TLB flushing operations, so fewer TLB flush operations are
  * needed.
  */
-extern pmd_t pmdp_invalidate_ad(struct vm_area_struct *vma,
+extern pmd_t pmdp_invalidate_ad(struct mm_area *vma,
 				unsigned long address, pmd_t *pmdp);
 #endif
 
@@ -1088,7 +1088,7 @@ static inline int pgd_same(pgd_t pgd_a, pgd_t pgd_b)
 
 #ifndef __HAVE_ARCH_DO_SWAP_PAGE
 static inline void arch_do_swap_page_nr(struct mm_struct *mm,
-				     struct vm_area_struct *vma,
+				     struct mm_area *vma,
 				     unsigned long addr,
 				     pte_t pte, pte_t oldpte,
 				     int nr)
@@ -1105,7 +1105,7 @@ static inline void arch_do_swap_page_nr(struct mm_struct *mm,
  * metadata when a page is swapped back in.
  */
 static inline void arch_do_swap_page_nr(struct mm_struct *mm,
-					struct vm_area_struct *vma,
+					struct mm_area *vma,
 					unsigned long addr,
 					pte_t pte, pte_t oldpte,
 					int nr)
@@ -1128,7 +1128,7 @@ static inline void arch_do_swap_page_nr(struct mm_struct *mm,
  * metadata on a swap-out of a page.
  */
 static inline int arch_unmap_one(struct mm_struct *mm,
-				  struct vm_area_struct *vma,
+				  struct mm_area *vma,
 				  unsigned long addr,
 				  pte_t orig_pte)
 {
@@ -1277,7 +1277,7 @@ static inline int pmd_none_or_clear_bad(pmd_t *pmd)
 	return 0;
 }
 
-static inline pte_t __ptep_modify_prot_start(struct vm_area_struct *vma,
+static inline pte_t __ptep_modify_prot_start(struct mm_area *vma,
 					     unsigned long addr,
 					     pte_t *ptep)
 {
@@ -1289,7 +1289,7 @@ static inline pte_t __ptep_modify_prot_start(struct vm_area_struct *vma,
 	return ptep_get_and_clear(vma->vm_mm, addr, ptep);
 }
 
-static inline void __ptep_modify_prot_commit(struct vm_area_struct *vma,
+static inline void __ptep_modify_prot_commit(struct mm_area *vma,
 					     unsigned long addr,
 					     pte_t *ptep, pte_t pte)
 {
@@ -1315,7 +1315,7 @@ static inline void __ptep_modify_prot_commit(struct vm_area_struct *vma,
  * queue the update to be done at some later time.  The update must be
  * actually committed before the pte lock is released, however.
  */
-static inline pte_t ptep_modify_prot_start(struct vm_area_struct *vma,
+static inline pte_t ptep_modify_prot_start(struct mm_area *vma,
 					   unsigned long addr,
 					   pte_t *ptep)
 {
@@ -1326,7 +1326,7 @@ static inline pte_t ptep_modify_prot_start(struct vm_area_struct *vma,
  * Commit an update to a pte, leaving any hardware-controlled bits in
  * the PTE unmodified.
  */
-static inline void ptep_modify_prot_commit(struct vm_area_struct *vma,
+static inline void ptep_modify_prot_commit(struct mm_area *vma,
 					   unsigned long addr,
 					   pte_t *ptep, pte_t old_pte, pte_t pte)
 {
@@ -1493,7 +1493,7 @@ static inline pmd_t pmd_swp_clear_soft_dirty(pmd_t pmd)
  * track_pfn_remap is called when a _new_ pfn mapping is being established
  * by remap_pfn_range() for physical range indicated by pfn and size.
  */
-static inline int track_pfn_remap(struct vm_area_struct *vma, pgprot_t *prot,
+static inline int track_pfn_remap(struct mm_area *vma, pgprot_t *prot,
 				  unsigned long pfn, unsigned long addr,
 				  unsigned long size)
 {
@@ -1504,7 +1504,7 @@ static inline int track_pfn_remap(struct vm_area_struct *vma, pgprot_t *prot,
  * track_pfn_insert is called when a _new_ single pfn is established
  * by vmf_insert_pfn().
  */
-static inline void track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot,
+static inline void track_pfn_insert(struct mm_area *vma, pgprot_t *prot,
 				    pfn_t pfn)
 {
 }
@@ -1514,8 +1514,8 @@ static inline void track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot,
  * tables copied during copy_page_range(). On success, stores the pfn to be
  * passed to untrack_pfn_copy().
  */
-static inline int track_pfn_copy(struct vm_area_struct *dst_vma,
-		struct vm_area_struct *src_vma, unsigned long *pfn)
+static inline int track_pfn_copy(struct mm_area *dst_vma,
+		struct mm_area *src_vma, unsigned long *pfn)
 {
 	return 0;
 }
@@ -1524,7 +1524,7 @@ static inline int track_pfn_copy(struct vm_area_struct *dst_vma,
  * untrack_pfn_copy is called when a VM_PFNMAP VMA failed to copy during
  * copy_page_range(), but after track_pfn_copy() was already called.
  */
-static inline void untrack_pfn_copy(struct vm_area_struct *dst_vma,
+static inline void untrack_pfn_copy(struct mm_area *dst_vma,
 		unsigned long pfn)
 {
 }
@@ -1534,7 +1534,7 @@ static inline void untrack_pfn_copy(struct vm_area_struct *dst_vma,
  * untrack can be called for a specific region indicated by pfn and size or
  * can be for the entire vma (in which case pfn, size are zero).
  */
-static inline void untrack_pfn(struct vm_area_struct *vma,
+static inline void untrack_pfn(struct mm_area *vma,
 			       unsigned long pfn, unsigned long size,
 			       bool mm_wr_locked)
 {
@@ -1546,22 +1546,22 @@ static inline void untrack_pfn(struct vm_area_struct *vma,
  * 1) During mremap() on the src VMA after the page tables were moved.
  * 2) During fork() on the dst VMA, immediately after duplicating the src VMA.
  */
-static inline void untrack_pfn_clear(struct vm_area_struct *vma)
+static inline void untrack_pfn_clear(struct mm_area *vma)
 {
 }
 #else
-extern int track_pfn_remap(struct vm_area_struct *vma, pgprot_t *prot,
+extern int track_pfn_remap(struct mm_area *vma, pgprot_t *prot,
 			   unsigned long pfn, unsigned long addr,
 			   unsigned long size);
-extern void track_pfn_insert(struct vm_area_struct *vma, pgprot_t *prot,
+extern void track_pfn_insert(struct mm_area *vma, pgprot_t *prot,
 			     pfn_t pfn);
-extern int track_pfn_copy(struct vm_area_struct *dst_vma,
-		struct vm_area_struct *src_vma, unsigned long *pfn);
-extern void untrack_pfn_copy(struct vm_area_struct *dst_vma,
+extern int track_pfn_copy(struct mm_area *dst_vma,
+		struct mm_area *src_vma, unsigned long *pfn);
+extern void untrack_pfn_copy(struct mm_area *dst_vma,
 		unsigned long pfn);
-extern void untrack_pfn(struct vm_area_struct *vma, unsigned long pfn,
+extern void untrack_pfn(struct mm_area *vma, unsigned long pfn,
 			unsigned long size, bool mm_wr_locked);
-extern void untrack_pfn_clear(struct vm_area_struct *vma);
+extern void untrack_pfn_clear(struct mm_area *vma);
 #endif
 
 #ifdef CONFIG_MMU
diff --git a/include/linux/pkeys.h b/include/linux/pkeys.h
index 86be8bf27b41..71db2f7ec326 100644
--- a/include/linux/pkeys.h
+++ b/include/linux/pkeys.h
@@ -15,7 +15,7 @@
 #define PKEY_DEDICATED_EXECUTE_ONLY 0
 #define ARCH_VM_PKEY_FLAGS 0
 
-static inline int vma_pkey(struct vm_area_struct *vma)
+static inline int vma_pkey(struct mm_area *vma)
 {
 	return 0;
 }
diff --git a/include/linux/proc_fs.h b/include/linux/proc_fs.h
index ea62201c74c4..b123101b135e 100644
--- a/include/linux/proc_fs.h
+++ b/include/linux/proc_fs.h
@@ -43,7 +43,7 @@ struct proc_ops {
 #ifdef CONFIG_COMPAT
 	long	(*proc_compat_ioctl)(struct file *, unsigned int, unsigned long);
 #endif
-	int	(*proc_mmap)(struct file *, struct vm_area_struct *);
+	int	(*proc_mmap)(struct file *, struct mm_area *);
 	unsigned long (*proc_get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);
 } __randomize_layout;
 
diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h
index 56e27263acf8..d7bed10786f6 100644
--- a/include/linux/ring_buffer.h
+++ b/include/linux/ring_buffer.h
@@ -245,7 +245,7 @@ int trace_rb_cpu_prepare(unsigned int cpu, struct hlist_node *node);
 #endif
 
 int ring_buffer_map(struct trace_buffer *buffer, int cpu,
-		    struct vm_area_struct *vma);
+		    struct mm_area *vma);
 int ring_buffer_unmap(struct trace_buffer *buffer, int cpu);
 int ring_buffer_map_get_reader(struct trace_buffer *buffer, int cpu);
 #endif /* _LINUX_RING_BUFFER_H */
diff --git a/include/linux/rmap.h b/include/linux/rmap.h
index 6b82b618846e..6e0a7da7a80a 100644
--- a/include/linux/rmap.h
+++ b/include/linux/rmap.h
@@ -81,7 +81,7 @@ struct anon_vma {
  * which link all the VMAs associated with this anon_vma.
  */
 struct anon_vma_chain {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct anon_vma *anon_vma;
 	struct list_head same_vma;   /* locked by mmap_lock & page_table_lock */
 	struct rb_node rb;			/* locked by anon_vma->rwsem */
@@ -152,12 +152,12 @@ static inline void anon_vma_unlock_read(struct anon_vma *anon_vma)
  * anon_vma helper functions.
  */
 void anon_vma_init(void);	/* create anon_vma_cachep */
-int  __anon_vma_prepare(struct vm_area_struct *);
-void unlink_anon_vmas(struct vm_area_struct *);
-int anon_vma_clone(struct vm_area_struct *, struct vm_area_struct *);
-int anon_vma_fork(struct vm_area_struct *, struct vm_area_struct *);
+int  __anon_vma_prepare(struct mm_area *);
+void unlink_anon_vmas(struct mm_area *);
+int anon_vma_clone(struct mm_area *, struct mm_area *);
+int anon_vma_fork(struct mm_area *, struct mm_area *);
 
-static inline int anon_vma_prepare(struct vm_area_struct *vma)
+static inline int anon_vma_prepare(struct mm_area *vma)
 {
 	if (likely(vma->anon_vma))
 		return 0;
@@ -165,8 +165,8 @@ static inline int anon_vma_prepare(struct vm_area_struct *vma)
 	return __anon_vma_prepare(vma);
 }
 
-static inline void anon_vma_merge(struct vm_area_struct *vma,
-				  struct vm_area_struct *next)
+static inline void anon_vma_merge(struct mm_area *vma,
+				  struct mm_area *next)
 {
 	VM_BUG_ON_VMA(vma->anon_vma != next->anon_vma, vma);
 	unlink_anon_vmas(next);
@@ -227,7 +227,7 @@ static inline void __folio_large_mapcount_sanity_checks(const struct folio *foli
 }
 
 static __always_inline void folio_set_large_mapcount(struct folio *folio,
-		int mapcount, struct vm_area_struct *vma)
+		int mapcount, struct mm_area *vma)
 {
 	__folio_large_mapcount_sanity_checks(folio, mapcount, vma->vm_mm->mm_id);
 
@@ -241,7 +241,7 @@ static __always_inline void folio_set_large_mapcount(struct folio *folio,
 }
 
 static __always_inline int folio_add_return_large_mapcount(struct folio *folio,
-		int diff, struct vm_area_struct *vma)
+		int diff, struct mm_area *vma)
 {
 	const mm_id_t mm_id = vma->vm_mm->mm_id;
 	int new_mapcount_val;
@@ -291,7 +291,7 @@ static __always_inline int folio_add_return_large_mapcount(struct folio *folio,
 #define folio_add_large_mapcount folio_add_return_large_mapcount
 
 static __always_inline int folio_sub_return_large_mapcount(struct folio *folio,
-		int diff, struct vm_area_struct *vma)
+		int diff, struct mm_area *vma)
 {
 	const mm_id_t mm_id = vma->vm_mm->mm_id;
 	int new_mapcount_val;
@@ -342,32 +342,32 @@ static __always_inline int folio_sub_return_large_mapcount(struct folio *folio,
  * CONFIG_TRANSPARENT_HUGEPAGE. We'll keep that working for now.
  */
 static inline void folio_set_large_mapcount(struct folio *folio, int mapcount,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	/* Note: mapcounts start at -1. */
 	atomic_set(&folio->_large_mapcount, mapcount - 1);
 }
 
 static inline void folio_add_large_mapcount(struct folio *folio,
-		int diff, struct vm_area_struct *vma)
+		int diff, struct mm_area *vma)
 {
 	atomic_add(diff, &folio->_large_mapcount);
 }
 
 static inline int folio_add_return_large_mapcount(struct folio *folio,
-		int diff, struct vm_area_struct *vma)
+		int diff, struct mm_area *vma)
 {
 	BUILD_BUG();
 }
 
 static inline void folio_sub_large_mapcount(struct folio *folio,
-		int diff, struct vm_area_struct *vma)
+		int diff, struct mm_area *vma)
 {
 	atomic_sub(diff, &folio->_large_mapcount);
 }
 
 static inline int folio_sub_return_large_mapcount(struct folio *folio,
-		int diff, struct vm_area_struct *vma)
+		int diff, struct mm_area *vma)
 {
 	BUILD_BUG();
 }
@@ -454,40 +454,40 @@ static inline void __folio_rmap_sanity_checks(const struct folio *folio,
 /*
  * rmap interfaces called when adding or removing pte of page
  */
-void folio_move_anon_rmap(struct folio *, struct vm_area_struct *);
+void folio_move_anon_rmap(struct folio *, struct mm_area *);
 void folio_add_anon_rmap_ptes(struct folio *, struct page *, int nr_pages,
-		struct vm_area_struct *, unsigned long address, rmap_t flags);
+		struct mm_area *, unsigned long address, rmap_t flags);
 #define folio_add_anon_rmap_pte(folio, page, vma, address, flags) \
 	folio_add_anon_rmap_ptes(folio, page, 1, vma, address, flags)
 void folio_add_anon_rmap_pmd(struct folio *, struct page *,
-		struct vm_area_struct *, unsigned long address, rmap_t flags);
-void folio_add_new_anon_rmap(struct folio *, struct vm_area_struct *,
+		struct mm_area *, unsigned long address, rmap_t flags);
+void folio_add_new_anon_rmap(struct folio *, struct mm_area *,
 		unsigned long address, rmap_t flags);
 void folio_add_file_rmap_ptes(struct folio *, struct page *, int nr_pages,
-		struct vm_area_struct *);
+		struct mm_area *);
 #define folio_add_file_rmap_pte(folio, page, vma) \
 	folio_add_file_rmap_ptes(folio, page, 1, vma)
 void folio_add_file_rmap_pmd(struct folio *, struct page *,
-		struct vm_area_struct *);
+		struct mm_area *);
 void folio_add_file_rmap_pud(struct folio *, struct page *,
-		struct vm_area_struct *);
+		struct mm_area *);
 void folio_remove_rmap_ptes(struct folio *, struct page *, int nr_pages,
-		struct vm_area_struct *);
+		struct mm_area *);
 #define folio_remove_rmap_pte(folio, page, vma) \
 	folio_remove_rmap_ptes(folio, page, 1, vma)
 void folio_remove_rmap_pmd(struct folio *, struct page *,
-		struct vm_area_struct *);
+		struct mm_area *);
 void folio_remove_rmap_pud(struct folio *, struct page *,
-		struct vm_area_struct *);
+		struct mm_area *);
 
-void hugetlb_add_anon_rmap(struct folio *, struct vm_area_struct *,
+void hugetlb_add_anon_rmap(struct folio *, struct mm_area *,
 		unsigned long address, rmap_t flags);
-void hugetlb_add_new_anon_rmap(struct folio *, struct vm_area_struct *,
+void hugetlb_add_new_anon_rmap(struct folio *, struct mm_area *,
 		unsigned long address);
 
 /* See folio_try_dup_anon_rmap_*() */
 static inline int hugetlb_try_dup_anon_rmap(struct folio *folio,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	VM_WARN_ON_FOLIO(!folio_test_hugetlb(folio), folio);
 	VM_WARN_ON_FOLIO(!folio_test_anon(folio), folio);
@@ -544,7 +544,7 @@ static inline void hugetlb_remove_rmap(struct folio *folio)
 }
 
 static __always_inline void __folio_dup_file_rmap(struct folio *folio,
-		struct page *page, int nr_pages, struct vm_area_struct *dst_vma,
+		struct page *page, int nr_pages, struct mm_area *dst_vma,
 		enum rmap_level level)
 {
 	const int orig_nr_pages = nr_pages;
@@ -585,13 +585,13 @@ static __always_inline void __folio_dup_file_rmap(struct folio *folio,
  * The caller needs to hold the page table lock.
  */
 static inline void folio_dup_file_rmap_ptes(struct folio *folio,
-		struct page *page, int nr_pages, struct vm_area_struct *dst_vma)
+		struct page *page, int nr_pages, struct mm_area *dst_vma)
 {
 	__folio_dup_file_rmap(folio, page, nr_pages, dst_vma, RMAP_LEVEL_PTE);
 }
 
 static __always_inline void folio_dup_file_rmap_pte(struct folio *folio,
-		struct page *page, struct vm_area_struct *dst_vma)
+		struct page *page, struct mm_area *dst_vma)
 {
 	__folio_dup_file_rmap(folio, page, 1, dst_vma, RMAP_LEVEL_PTE);
 }
@@ -607,7 +607,7 @@ static __always_inline void folio_dup_file_rmap_pte(struct folio *folio,
  * The caller needs to hold the page table lock.
  */
 static inline void folio_dup_file_rmap_pmd(struct folio *folio,
-		struct page *page, struct vm_area_struct *dst_vma)
+		struct page *page, struct mm_area *dst_vma)
 {
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 	__folio_dup_file_rmap(folio, page, HPAGE_PMD_NR, dst_vma, RMAP_LEVEL_PTE);
@@ -617,8 +617,8 @@ static inline void folio_dup_file_rmap_pmd(struct folio *folio,
 }
 
 static __always_inline int __folio_try_dup_anon_rmap(struct folio *folio,
-		struct page *page, int nr_pages, struct vm_area_struct *dst_vma,
-		struct vm_area_struct *src_vma, enum rmap_level level)
+		struct page *page, int nr_pages, struct mm_area *dst_vma,
+		struct mm_area *src_vma, enum rmap_level level)
 {
 	const int orig_nr_pages = nr_pages;
 	bool maybe_pinned;
@@ -704,16 +704,16 @@ static __always_inline int __folio_try_dup_anon_rmap(struct folio *folio,
  * Returns 0 if duplicating the mappings succeeded. Returns -EBUSY otherwise.
  */
 static inline int folio_try_dup_anon_rmap_ptes(struct folio *folio,
-		struct page *page, int nr_pages, struct vm_area_struct *dst_vma,
-		struct vm_area_struct *src_vma)
+		struct page *page, int nr_pages, struct mm_area *dst_vma,
+		struct mm_area *src_vma)
 {
 	return __folio_try_dup_anon_rmap(folio, page, nr_pages, dst_vma,
 					 src_vma, RMAP_LEVEL_PTE);
 }
 
 static __always_inline int folio_try_dup_anon_rmap_pte(struct folio *folio,
-		struct page *page, struct vm_area_struct *dst_vma,
-		struct vm_area_struct *src_vma)
+		struct page *page, struct mm_area *dst_vma,
+		struct mm_area *src_vma)
 {
 	return __folio_try_dup_anon_rmap(folio, page, 1, dst_vma, src_vma,
 					 RMAP_LEVEL_PTE);
@@ -743,8 +743,8 @@ static __always_inline int folio_try_dup_anon_rmap_pte(struct folio *folio,
  * Returns 0 if duplicating the mapping succeeded. Returns -EBUSY otherwise.
  */
 static inline int folio_try_dup_anon_rmap_pmd(struct folio *folio,
-		struct page *page, struct vm_area_struct *dst_vma,
-		struct vm_area_struct *src_vma)
+		struct page *page, struct mm_area *dst_vma,
+		struct mm_area *src_vma)
 {
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 	return __folio_try_dup_anon_rmap(folio, page, HPAGE_PMD_NR, dst_vma,
@@ -910,7 +910,7 @@ struct page_vma_mapped_walk {
 	unsigned long pfn;
 	unsigned long nr_pages;
 	pgoff_t pgoff;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long address;
 	pmd_t *pmd;
 	pte_t *pte;
@@ -963,7 +963,7 @@ page_vma_mapped_walk_restart(struct page_vma_mapped_walk *pvmw)
 
 bool page_vma_mapped_walk(struct page_vma_mapped_walk *pvmw);
 unsigned long page_address_in_vma(const struct folio *folio,
-		const struct page *, const struct vm_area_struct *);
+		const struct page *, const struct mm_area *);
 
 /*
  * Cleans the PTEs of shared mappings.
@@ -977,7 +977,7 @@ int mapping_wrprotect_range(struct address_space *mapping, pgoff_t pgoff,
 		unsigned long pfn, unsigned long nr_pages);
 
 int pfn_mkclean_range(unsigned long pfn, unsigned long nr_pages, pgoff_t pgoff,
-		      struct vm_area_struct *vma);
+		      struct mm_area *vma);
 
 enum rmp_flags {
 	RMP_LOCKED		= 1 << 0,
@@ -1005,12 +1005,12 @@ struct rmap_walk_control {
 	 * Return false if page table scanning in rmap_walk should be stopped.
 	 * Otherwise, return true.
 	 */
-	bool (*rmap_one)(struct folio *folio, struct vm_area_struct *vma,
+	bool (*rmap_one)(struct folio *folio, struct mm_area *vma,
 					unsigned long addr, void *arg);
 	int (*done)(struct folio *folio);
 	struct anon_vma *(*anon_lock)(const struct folio *folio,
 				      struct rmap_walk_control *rwc);
-	bool (*invalid_vma)(struct vm_area_struct *vma, void *arg);
+	bool (*invalid_vma)(struct mm_area *vma, void *arg);
 };
 
 void rmap_walk(struct folio *folio, struct rmap_walk_control *rwc);
diff --git a/include/linux/secretmem.h b/include/linux/secretmem.h
index e918f96881f5..a38896f49499 100644
--- a/include/linux/secretmem.h
+++ b/include/linux/secretmem.h
@@ -11,12 +11,12 @@ static inline bool secretmem_mapping(struct address_space *mapping)
 	return mapping->a_ops == &secretmem_aops;
 }
 
-bool vma_is_secretmem(struct vm_area_struct *vma);
+bool vma_is_secretmem(struct mm_area *vma);
 bool secretmem_active(void);
 
 #else
 
-static inline bool vma_is_secretmem(struct vm_area_struct *vma)
+static inline bool vma_is_secretmem(struct mm_area *vma)
 {
 	return false;
 }
diff --git a/include/linux/security.h b/include/linux/security.h
index cc9b54d95d22..8478e56ee173 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -476,7 +476,7 @@ int security_file_ioctl_compat(struct file *file, unsigned int cmd,
 int security_mmap_file(struct file *file, unsigned long prot,
 			unsigned long flags);
 int security_mmap_addr(unsigned long addr);
-int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot,
+int security_file_mprotect(struct mm_area *vma, unsigned long reqprot,
 			   unsigned long prot);
 int security_file_lock(struct file *file, unsigned int cmd);
 int security_file_fcntl(struct file *file, unsigned int cmd, unsigned long arg);
@@ -1151,7 +1151,7 @@ static inline int security_mmap_addr(unsigned long addr)
 	return cap_mmap_addr(addr);
 }
 
-static inline int security_file_mprotect(struct vm_area_struct *vma,
+static inline int security_file_mprotect(struct mm_area *vma,
 					 unsigned long reqprot,
 					 unsigned long prot)
 {
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h
index 0b273a7b9f01..e3913a29f10e 100644
--- a/include/linux/shmem_fs.h
+++ b/include/linux/shmem_fs.h
@@ -92,7 +92,7 @@ extern struct file *shmem_kernel_file_setup(const char *name, loff_t size,
 					    unsigned long flags);
 extern struct file *shmem_file_setup_with_mnt(struct vfsmount *mnt,
 		const char *name, loff_t size, unsigned long flags);
-extern int shmem_zero_setup(struct vm_area_struct *);
+extern int shmem_zero_setup(struct mm_area *);
 extern unsigned long shmem_get_unmapped_area(struct file *, unsigned long addr,
 		unsigned long len, unsigned long pgoff, unsigned long flags);
 extern int shmem_lock(struct file *file, int lock, struct ucounts *ucounts);
@@ -112,12 +112,12 @@ int shmem_unuse(unsigned int type);
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 unsigned long shmem_allowable_huge_orders(struct inode *inode,
-				struct vm_area_struct *vma, pgoff_t index,
+				struct mm_area *vma, pgoff_t index,
 				loff_t write_end, bool shmem_huge_force);
 bool shmem_hpage_pmd_enabled(void);
 #else
 static inline unsigned long shmem_allowable_huge_orders(struct inode *inode,
-				struct vm_area_struct *vma, pgoff_t index,
+				struct mm_area *vma, pgoff_t index,
 				loff_t write_end, bool shmem_huge_force)
 {
 	return 0;
@@ -130,9 +130,9 @@ static inline bool shmem_hpage_pmd_enabled(void)
 #endif
 
 #ifdef CONFIG_SHMEM
-extern unsigned long shmem_swap_usage(struct vm_area_struct *vma);
+extern unsigned long shmem_swap_usage(struct mm_area *vma);
 #else
-static inline unsigned long shmem_swap_usage(struct vm_area_struct *vma)
+static inline unsigned long shmem_swap_usage(struct mm_area *vma)
 {
 	return 0;
 }
@@ -194,7 +194,7 @@ extern void shmem_uncharge(struct inode *inode, long pages);
 #ifdef CONFIG_USERFAULTFD
 #ifdef CONFIG_SHMEM
 extern int shmem_mfill_atomic_pte(pmd_t *dst_pmd,
-				  struct vm_area_struct *dst_vma,
+				  struct mm_area *dst_vma,
 				  unsigned long dst_addr,
 				  unsigned long src_addr,
 				  uffd_flags_t flags,
diff --git a/include/linux/swap.h b/include/linux/swap.h
index db46b25a65ae..1652caa8ceed 100644
--- a/include/linux/swap.h
+++ b/include/linux/swap.h
@@ -380,7 +380,7 @@ void lru_note_cost(struct lruvec *lruvec, bool file,
 		   unsigned int nr_io, unsigned int nr_rotated);
 void lru_note_cost_refault(struct folio *);
 void folio_add_lru(struct folio *);
-void folio_add_lru_vma(struct folio *, struct vm_area_struct *);
+void folio_add_lru_vma(struct folio *, struct mm_area *);
 void mark_page_accessed(struct page *);
 void folio_mark_accessed(struct folio *);
 
diff --git a/include/linux/swapops.h b/include/linux/swapops.h
index 64ea151a7ae3..697e5d60b776 100644
--- a/include/linux/swapops.h
+++ b/include/linux/swapops.h
@@ -315,7 +315,7 @@ static inline bool is_migration_entry_dirty(swp_entry_t entry)
 
 extern void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd,
 					unsigned long address);
-extern void migration_entry_wait_huge(struct vm_area_struct *vma, unsigned long addr, pte_t *pte);
+extern void migration_entry_wait_huge(struct mm_area *vma, unsigned long addr, pte_t *pte);
 #else  /* CONFIG_MIGRATION */
 static inline swp_entry_t make_readable_migration_entry(pgoff_t offset)
 {
@@ -339,7 +339,7 @@ static inline int is_migration_entry(swp_entry_t swp)
 
 static inline void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd,
 					unsigned long address) { }
-static inline void migration_entry_wait_huge(struct vm_area_struct *vma,
+static inline void migration_entry_wait_huge(struct mm_area *vma,
 					     unsigned long addr, pte_t *pte) { }
 static inline int is_writable_migration_entry(swp_entry_t entry)
 {
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
index 18f7e1fd093c..4b1c38978498 100644
--- a/include/linux/sysfs.h
+++ b/include/linux/sysfs.h
@@ -298,7 +298,7 @@ static const struct attribute_group _name##_group = {		\
 __ATTRIBUTE_GROUPS(_name)
 
 struct file;
-struct vm_area_struct;
+struct mm_area;
 struct address_space;
 
 struct bin_attribute {
@@ -317,7 +317,7 @@ struct bin_attribute {
 	loff_t (*llseek)(struct file *, struct kobject *, const struct bin_attribute *,
 			 loff_t, int);
 	int (*mmap)(struct file *, struct kobject *, const struct bin_attribute *attr,
-		    struct vm_area_struct *vma);
+		    struct mm_area *vma);
 };
 
 /**
diff --git a/include/linux/time_namespace.h b/include/linux/time_namespace.h
index 0b8b32bf0655..12b3ecc86fe6 100644
--- a/include/linux/time_namespace.h
+++ b/include/linux/time_namespace.h
@@ -12,7 +12,7 @@
 struct user_namespace;
 extern struct user_namespace init_user_ns;
 
-struct vm_area_struct;
+struct mm_area;
 
 struct timens_offsets {
 	struct timespec64 monotonic;
@@ -47,7 +47,7 @@ struct time_namespace *copy_time_ns(unsigned long flags,
 				    struct time_namespace *old_ns);
 void free_time_ns(struct time_namespace *ns);
 void timens_on_fork(struct nsproxy *nsproxy, struct task_struct *tsk);
-struct page *find_timens_vvar_page(struct vm_area_struct *vma);
+struct page *find_timens_vvar_page(struct mm_area *vma);
 
 static inline void put_time_ns(struct time_namespace *ns)
 {
@@ -144,7 +144,7 @@ static inline void timens_on_fork(struct nsproxy *nsproxy,
 	return;
 }
 
-static inline struct page *find_timens_vvar_page(struct vm_area_struct *vma)
+static inline struct page *find_timens_vvar_page(struct mm_area *vma)
 {
 	return NULL;
 }
diff --git a/include/linux/uacce.h b/include/linux/uacce.h
index e290c0269944..dcb2b94de9f1 100644
--- a/include/linux/uacce.h
+++ b/include/linux/uacce.h
@@ -43,7 +43,7 @@ struct uacce_ops {
 	int (*start_queue)(struct uacce_queue *q);
 	void (*stop_queue)(struct uacce_queue *q);
 	int (*is_q_updated)(struct uacce_queue *q);
-	int (*mmap)(struct uacce_queue *q, struct vm_area_struct *vma,
+	int (*mmap)(struct uacce_queue *q, struct mm_area *vma,
 		    struct uacce_qfile_region *qfr);
 	long (*ioctl)(struct uacce_queue *q, unsigned int cmd,
 		      unsigned long arg);
diff --git a/include/linux/uio_driver.h b/include/linux/uio_driver.h
index 18238dc8bfd3..69fdc49c1df4 100644
--- a/include/linux/uio_driver.h
+++ b/include/linux/uio_driver.h
@@ -112,7 +112,7 @@ struct uio_info {
 	unsigned long		irq_flags;
 	void			*priv;
 	irqreturn_t (*handler)(int irq, struct uio_info *dev_info);
-	int (*mmap)(struct uio_info *info, struct vm_area_struct *vma);
+	int (*mmap)(struct uio_info *info, struct mm_area *vma);
 	int (*open)(struct uio_info *info, struct inode *inode);
 	int (*release)(struct uio_info *info, struct inode *inode);
 	int (*irqcontrol)(struct uio_info *info, s32 irq_on);
diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h
index 2e46b69ff0a6..f8af45f0c683 100644
--- a/include/linux/uprobes.h
+++ b/include/linux/uprobes.h
@@ -19,7 +19,7 @@
 #include <linux/seqlock.h>
 
 struct uprobe;
-struct vm_area_struct;
+struct mm_area;
 struct mm_struct;
 struct inode;
 struct notifier_block;
@@ -199,8 +199,8 @@ extern struct uprobe *uprobe_register(struct inode *inode, loff_t offset, loff_t
 extern int uprobe_apply(struct uprobe *uprobe, struct uprobe_consumer *uc, bool);
 extern void uprobe_unregister_nosync(struct uprobe *uprobe, struct uprobe_consumer *uc);
 extern void uprobe_unregister_sync(void);
-extern int uprobe_mmap(struct vm_area_struct *vma);
-extern void uprobe_munmap(struct vm_area_struct *vma, unsigned long start, unsigned long end);
+extern int uprobe_mmap(struct mm_area *vma);
+extern void uprobe_munmap(struct mm_area *vma, unsigned long start, unsigned long end);
 extern void uprobe_start_dup_mmap(void);
 extern void uprobe_end_dup_mmap(void);
 extern void uprobe_dup_mmap(struct mm_struct *oldmm, struct mm_struct *newmm);
@@ -253,12 +253,12 @@ uprobe_unregister_nosync(struct uprobe *uprobe, struct uprobe_consumer *uc)
 static inline void uprobe_unregister_sync(void)
 {
 }
-static inline int uprobe_mmap(struct vm_area_struct *vma)
+static inline int uprobe_mmap(struct mm_area *vma)
 {
 	return 0;
 }
 static inline void
-uprobe_munmap(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+uprobe_munmap(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 }
 static inline void uprobe_start_dup_mmap(void)
diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h
index 75342022d144..6b45a807875d 100644
--- a/include/linux/userfaultfd_k.h
+++ b/include/linux/userfaultfd_k.h
@@ -116,7 +116,7 @@ static inline uffd_flags_t uffd_flags_set_mode(uffd_flags_t flags, enum mfill_at
 #define MFILL_ATOMIC_WP MFILL_ATOMIC_FLAG(0)
 
 extern int mfill_atomic_install_pte(pmd_t *dst_pmd,
-				    struct vm_area_struct *dst_vma,
+				    struct mm_area *dst_vma,
 				    unsigned long dst_addr, struct page *page,
 				    bool newly_allocated, uffd_flags_t flags);
 
@@ -132,7 +132,7 @@ extern ssize_t mfill_atomic_poison(struct userfaultfd_ctx *ctx, unsigned long st
 				   unsigned long len, uffd_flags_t flags);
 extern int mwriteprotect_range(struct userfaultfd_ctx *ctx, unsigned long start,
 			       unsigned long len, bool enable_wp);
-extern long uffd_wp_range(struct vm_area_struct *vma,
+extern long uffd_wp_range(struct mm_area *vma,
 			  unsigned long start, unsigned long len, bool enable_wp);
 
 /* move_pages */
@@ -141,12 +141,12 @@ void double_pt_unlock(spinlock_t *ptl1, spinlock_t *ptl2);
 ssize_t move_pages(struct userfaultfd_ctx *ctx, unsigned long dst_start,
 		   unsigned long src_start, unsigned long len, __u64 flags);
 int move_pages_huge_pmd(struct mm_struct *mm, pmd_t *dst_pmd, pmd_t *src_pmd, pmd_t dst_pmdval,
-			struct vm_area_struct *dst_vma,
-			struct vm_area_struct *src_vma,
+			struct mm_area *dst_vma,
+			struct mm_area *src_vma,
 			unsigned long dst_addr, unsigned long src_addr);
 
 /* mm helpers */
-static inline bool is_mergeable_vm_userfaultfd_ctx(struct vm_area_struct *vma,
+static inline bool is_mergeable_vm_userfaultfd_ctx(struct mm_area *vma,
 					struct vm_userfaultfd_ctx vm_ctx)
 {
 	return vma->vm_userfaultfd_ctx.ctx == vm_ctx.ctx;
@@ -163,7 +163,7 @@ static inline bool is_mergeable_vm_userfaultfd_ctx(struct vm_area_struct *vma,
  *   with huge pmd sharing this would *also* setup the second UFFD-registered
  *   mapping, and we'd not get minor faults.)
  */
-static inline bool uffd_disable_huge_pmd_share(struct vm_area_struct *vma)
+static inline bool uffd_disable_huge_pmd_share(struct mm_area *vma)
 {
 	return vma->vm_flags & (VM_UFFD_WP | VM_UFFD_MINOR);
 }
@@ -175,44 +175,44 @@ static inline bool uffd_disable_huge_pmd_share(struct vm_area_struct *vma)
  * as the fault around checks for pte_none() before the installation, however
  * to be super safe we just forbid it.
  */
-static inline bool uffd_disable_fault_around(struct vm_area_struct *vma)
+static inline bool uffd_disable_fault_around(struct mm_area *vma)
 {
 	return vma->vm_flags & (VM_UFFD_WP | VM_UFFD_MINOR);
 }
 
-static inline bool userfaultfd_missing(struct vm_area_struct *vma)
+static inline bool userfaultfd_missing(struct mm_area *vma)
 {
 	return vma->vm_flags & VM_UFFD_MISSING;
 }
 
-static inline bool userfaultfd_wp(struct vm_area_struct *vma)
+static inline bool userfaultfd_wp(struct mm_area *vma)
 {
 	return vma->vm_flags & VM_UFFD_WP;
 }
 
-static inline bool userfaultfd_minor(struct vm_area_struct *vma)
+static inline bool userfaultfd_minor(struct mm_area *vma)
 {
 	return vma->vm_flags & VM_UFFD_MINOR;
 }
 
-static inline bool userfaultfd_pte_wp(struct vm_area_struct *vma,
+static inline bool userfaultfd_pte_wp(struct mm_area *vma,
 				      pte_t pte)
 {
 	return userfaultfd_wp(vma) && pte_uffd_wp(pte);
 }
 
-static inline bool userfaultfd_huge_pmd_wp(struct vm_area_struct *vma,
+static inline bool userfaultfd_huge_pmd_wp(struct mm_area *vma,
 					   pmd_t pmd)
 {
 	return userfaultfd_wp(vma) && pmd_uffd_wp(pmd);
 }
 
-static inline bool userfaultfd_armed(struct vm_area_struct *vma)
+static inline bool userfaultfd_armed(struct mm_area *vma)
 {
 	return vma->vm_flags & __VM_UFFD_FLAGS;
 }
 
-static inline bool vma_can_userfault(struct vm_area_struct *vma,
+static inline bool vma_can_userfault(struct mm_area *vma,
 				     unsigned long vm_flags,
 				     bool wp_async)
 {
@@ -247,44 +247,44 @@ static inline bool vma_can_userfault(struct vm_area_struct *vma,
 	    vma_is_shmem(vma);
 }
 
-static inline bool vma_has_uffd_without_event_remap(struct vm_area_struct *vma)
+static inline bool vma_has_uffd_without_event_remap(struct mm_area *vma)
 {
 	struct userfaultfd_ctx *uffd_ctx = vma->vm_userfaultfd_ctx.ctx;
 
 	return uffd_ctx && (uffd_ctx->features & UFFD_FEATURE_EVENT_REMAP) == 0;
 }
 
-extern int dup_userfaultfd(struct vm_area_struct *, struct list_head *);
+extern int dup_userfaultfd(struct mm_area *, struct list_head *);
 extern void dup_userfaultfd_complete(struct list_head *);
 void dup_userfaultfd_fail(struct list_head *);
 
-extern void mremap_userfaultfd_prep(struct vm_area_struct *,
+extern void mremap_userfaultfd_prep(struct mm_area *,
 				    struct vm_userfaultfd_ctx *);
 extern void mremap_userfaultfd_complete(struct vm_userfaultfd_ctx *,
 					unsigned long from, unsigned long to,
 					unsigned long len);
 
-extern bool userfaultfd_remove(struct vm_area_struct *vma,
+extern bool userfaultfd_remove(struct mm_area *vma,
 			       unsigned long start,
 			       unsigned long end);
 
-extern int userfaultfd_unmap_prep(struct vm_area_struct *vma,
+extern int userfaultfd_unmap_prep(struct mm_area *vma,
 		unsigned long start, unsigned long end, struct list_head *uf);
 extern void userfaultfd_unmap_complete(struct mm_struct *mm,
 				       struct list_head *uf);
-extern bool userfaultfd_wp_unpopulated(struct vm_area_struct *vma);
-extern bool userfaultfd_wp_async(struct vm_area_struct *vma);
+extern bool userfaultfd_wp_unpopulated(struct mm_area *vma);
+extern bool userfaultfd_wp_async(struct mm_area *vma);
 
-void userfaultfd_reset_ctx(struct vm_area_struct *vma);
+void userfaultfd_reset_ctx(struct mm_area *vma);
 
-struct vm_area_struct *userfaultfd_clear_vma(struct vma_iterator *vmi,
-					     struct vm_area_struct *prev,
-					     struct vm_area_struct *vma,
+struct mm_area *userfaultfd_clear_vma(struct vma_iterator *vmi,
+					     struct mm_area *prev,
+					     struct mm_area *vma,
 					     unsigned long start,
 					     unsigned long end);
 
 int userfaultfd_register_range(struct userfaultfd_ctx *ctx,
-			       struct vm_area_struct *vma,
+			       struct mm_area *vma,
 			       unsigned long vm_flags,
 			       unsigned long start, unsigned long end,
 			       bool wp_async);
@@ -303,53 +303,53 @@ static inline vm_fault_t handle_userfault(struct vm_fault *vmf,
 	return VM_FAULT_SIGBUS;
 }
 
-static inline long uffd_wp_range(struct vm_area_struct *vma,
+static inline long uffd_wp_range(struct mm_area *vma,
 				 unsigned long start, unsigned long len,
 				 bool enable_wp)
 {
 	return false;
 }
 
-static inline bool is_mergeable_vm_userfaultfd_ctx(struct vm_area_struct *vma,
+static inline bool is_mergeable_vm_userfaultfd_ctx(struct mm_area *vma,
 					struct vm_userfaultfd_ctx vm_ctx)
 {
 	return true;
 }
 
-static inline bool userfaultfd_missing(struct vm_area_struct *vma)
+static inline bool userfaultfd_missing(struct mm_area *vma)
 {
 	return false;
 }
 
-static inline bool userfaultfd_wp(struct vm_area_struct *vma)
+static inline bool userfaultfd_wp(struct mm_area *vma)
 {
 	return false;
 }
 
-static inline bool userfaultfd_minor(struct vm_area_struct *vma)
+static inline bool userfaultfd_minor(struct mm_area *vma)
 {
 	return false;
 }
 
-static inline bool userfaultfd_pte_wp(struct vm_area_struct *vma,
+static inline bool userfaultfd_pte_wp(struct mm_area *vma,
 				      pte_t pte)
 {
 	return false;
 }
 
-static inline bool userfaultfd_huge_pmd_wp(struct vm_area_struct *vma,
+static inline bool userfaultfd_huge_pmd_wp(struct mm_area *vma,
 					   pmd_t pmd)
 {
 	return false;
 }
 
 
-static inline bool userfaultfd_armed(struct vm_area_struct *vma)
+static inline bool userfaultfd_armed(struct mm_area *vma)
 {
 	return false;
 }
 
-static inline int dup_userfaultfd(struct vm_area_struct *vma,
+static inline int dup_userfaultfd(struct mm_area *vma,
 				  struct list_head *l)
 {
 	return 0;
@@ -363,7 +363,7 @@ static inline void dup_userfaultfd_fail(struct list_head *l)
 {
 }
 
-static inline void mremap_userfaultfd_prep(struct vm_area_struct *vma,
+static inline void mremap_userfaultfd_prep(struct mm_area *vma,
 					   struct vm_userfaultfd_ctx *ctx)
 {
 }
@@ -375,14 +375,14 @@ static inline void mremap_userfaultfd_complete(struct vm_userfaultfd_ctx *ctx,
 {
 }
 
-static inline bool userfaultfd_remove(struct vm_area_struct *vma,
+static inline bool userfaultfd_remove(struct mm_area *vma,
 				      unsigned long start,
 				      unsigned long end)
 {
 	return true;
 }
 
-static inline int userfaultfd_unmap_prep(struct vm_area_struct *vma,
+static inline int userfaultfd_unmap_prep(struct mm_area *vma,
 					 unsigned long start, unsigned long end,
 					 struct list_head *uf)
 {
@@ -394,29 +394,29 @@ static inline void userfaultfd_unmap_complete(struct mm_struct *mm,
 {
 }
 
-static inline bool uffd_disable_fault_around(struct vm_area_struct *vma)
+static inline bool uffd_disable_fault_around(struct mm_area *vma)
 {
 	return false;
 }
 
-static inline bool userfaultfd_wp_unpopulated(struct vm_area_struct *vma)
+static inline bool userfaultfd_wp_unpopulated(struct mm_area *vma)
 {
 	return false;
 }
 
-static inline bool userfaultfd_wp_async(struct vm_area_struct *vma)
+static inline bool userfaultfd_wp_async(struct mm_area *vma)
 {
 	return false;
 }
 
-static inline bool vma_has_uffd_without_event_remap(struct vm_area_struct *vma)
+static inline bool vma_has_uffd_without_event_remap(struct mm_area *vma)
 {
 	return false;
 }
 
 #endif /* CONFIG_USERFAULTFD */
 
-static inline bool userfaultfd_wp_use_markers(struct vm_area_struct *vma)
+static inline bool userfaultfd_wp_use_markers(struct mm_area *vma)
 {
 	/* Only wr-protect mode uses pte markers */
 	if (!userfaultfd_wp(vma))
diff --git a/include/linux/vdso_datastore.h b/include/linux/vdso_datastore.h
index a91fa24b06e0..8523a57ba6c0 100644
--- a/include/linux/vdso_datastore.h
+++ b/include/linux/vdso_datastore.h
@@ -5,6 +5,6 @@
 #include <linux/mm_types.h>
 
 extern const struct vm_special_mapping vdso_vvar_mapping;
-struct vm_area_struct *vdso_install_vvar_mapping(struct mm_struct *mm, unsigned long addr);
+struct mm_area *vdso_install_vvar_mapping(struct mm_struct *mm, unsigned long addr);
 
 #endif /* _LINUX_VDSO_DATASTORE_H */
diff --git a/include/linux/vfio.h b/include/linux/vfio.h
index 707b00772ce1..3830567b796e 100644
--- a/include/linux/vfio.h
+++ b/include/linux/vfio.h
@@ -129,7 +129,7 @@ struct vfio_device_ops {
 			 size_t count, loff_t *size);
 	long	(*ioctl)(struct vfio_device *vdev, unsigned int cmd,
 			 unsigned long arg);
-	int	(*mmap)(struct vfio_device *vdev, struct vm_area_struct *vma);
+	int	(*mmap)(struct vfio_device *vdev, struct mm_area *vma);
 	void	(*request)(struct vfio_device *vdev, unsigned int count);
 	int	(*match)(struct vfio_device *vdev, char *buf);
 	void	(*dma_unmap)(struct vfio_device *vdev, u64 iova, u64 length);
diff --git a/include/linux/vfio_pci_core.h b/include/linux/vfio_pci_core.h
index fbb472dd99b3..0dcef04e3e8c 100644
--- a/include/linux/vfio_pci_core.h
+++ b/include/linux/vfio_pci_core.h
@@ -34,7 +34,7 @@ struct vfio_pci_regops {
 			   struct vfio_pci_region *region);
 	int	(*mmap)(struct vfio_pci_core_device *vdev,
 			struct vfio_pci_region *region,
-			struct vm_area_struct *vma);
+			struct mm_area *vma);
 	int	(*add_capability)(struct vfio_pci_core_device *vdev,
 				  struct vfio_pci_region *region,
 				  struct vfio_info_cap *caps);
@@ -119,7 +119,7 @@ ssize_t vfio_pci_core_read(struct vfio_device *core_vdev, char __user *buf,
 		size_t count, loff_t *ppos);
 ssize_t vfio_pci_core_write(struct vfio_device *core_vdev, const char __user *buf,
 		size_t count, loff_t *ppos);
-int vfio_pci_core_mmap(struct vfio_device *core_vdev, struct vm_area_struct *vma);
+int vfio_pci_core_mmap(struct vfio_device *core_vdev, struct mm_area *vma);
 void vfio_pci_core_request(struct vfio_device *core_vdev, unsigned int count);
 int vfio_pci_core_match(struct vfio_device *core_vdev, char *buf);
 int vfio_pci_core_enable(struct vfio_pci_core_device *vdev);
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h
index 31e9ffd936e3..3e555eb63f36 100644
--- a/include/linux/vmalloc.h
+++ b/include/linux/vmalloc.h
@@ -14,7 +14,7 @@
 
 #include <asm/vmalloc.h>
 
-struct vm_area_struct;		/* vma defining user mapping in mm_types.h */
+struct mm_area;		/* vma defining user mapping in mm_types.h */
 struct notifier_block;		/* in notifier.h */
 struct iov_iter;		/* in uio.h */
 
@@ -195,11 +195,11 @@ extern void *vmap(struct page **pages, unsigned int count,
 void *vmap_pfn(unsigned long *pfns, unsigned int count, pgprot_t prot);
 extern void vunmap(const void *addr);
 
-extern int remap_vmalloc_range_partial(struct vm_area_struct *vma,
+extern int remap_vmalloc_range_partial(struct mm_area *vma,
 				       unsigned long uaddr, void *kaddr,
 				       unsigned long pgoff, unsigned long size);
 
-extern int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,
+extern int remap_vmalloc_range(struct mm_area *vma, void *addr,
 							unsigned long pgoff);
 
 int vmap_pages_range(unsigned long addr, unsigned long end, pgprot_t prot,
diff --git a/include/media/dvb_vb2.h b/include/media/dvb_vb2.h
index 8cb88452cd6c..42956944bba4 100644
--- a/include/media/dvb_vb2.h
+++ b/include/media/dvb_vb2.h
@@ -270,11 +270,11 @@ int dvb_vb2_dqbuf(struct dvb_vb2_ctx *ctx, struct dmx_buffer *b);
  * dvb_vb2_mmap() - Wrapper to vb2_mmap() for Digital TV buffer handling.
  *
  * @ctx:	control struct for VB2 handler
- * @vma:        pointer to &struct vm_area_struct with the vma passed
+ * @vma:        pointer to &struct mm_area with the vma passed
  *              to the mmap file operation handler in the driver.
  *
  * map Digital TV video buffers into application address space.
  */
-int dvb_vb2_mmap(struct dvb_vb2_ctx *ctx, struct vm_area_struct *vma);
+int dvb_vb2_mmap(struct dvb_vb2_ctx *ctx, struct mm_area *vma);
 
 #endif /* _DVB_VB2_H */
diff --git a/include/media/v4l2-dev.h b/include/media/v4l2-dev.h
index 1b6222fab24e..caef335b7731 100644
--- a/include/media/v4l2-dev.h
+++ b/include/media/v4l2-dev.h
@@ -209,7 +209,7 @@ struct v4l2_file_operations {
 #endif
 	unsigned long (*get_unmapped_area) (struct file *, unsigned long,
 				unsigned long, unsigned long, unsigned long);
-	int (*mmap) (struct file *, struct vm_area_struct *);
+	int (*mmap) (struct file *, struct mm_area *);
 	int (*open) (struct file *);
 	int (*release) (struct file *);
 };
diff --git a/include/media/v4l2-mem2mem.h b/include/media/v4l2-mem2mem.h
index 0af330cf91c3..19ee65878a35 100644
--- a/include/media/v4l2-mem2mem.h
+++ b/include/media/v4l2-mem2mem.h
@@ -490,7 +490,7 @@ __poll_t v4l2_m2m_poll(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
  *
  * @file: pointer to struct &file
  * @m2m_ctx: m2m context assigned to the instance given by struct &v4l2_m2m_ctx
- * @vma: pointer to struct &vm_area_struct
+ * @vma: pointer to struct &mm_area
  *
  * Call from driver's mmap() function. Will handle mmap() for both queues
  * seamlessly for the video buffer, which will receive normal per-queue offsets
@@ -500,7 +500,7 @@ __poll_t v4l2_m2m_poll(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
  * thus applications) receive modified offsets.
  */
 int v4l2_m2m_mmap(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
-		  struct vm_area_struct *vma);
+		  struct mm_area *vma);
 
 #ifndef CONFIG_MMU
 unsigned long v4l2_m2m_get_unmapped_area(struct file *file, unsigned long addr,
@@ -895,7 +895,7 @@ int v4l2_m2m_ioctl_stateless_try_decoder_cmd(struct file *file, void *fh,
 					     struct v4l2_decoder_cmd *dc);
 int v4l2_m2m_ioctl_stateless_decoder_cmd(struct file *file, void *priv,
 					 struct v4l2_decoder_cmd *dc);
-int v4l2_m2m_fop_mmap(struct file *file, struct vm_area_struct *vma);
+int v4l2_m2m_fop_mmap(struct file *file, struct mm_area *vma);
 __poll_t v4l2_m2m_fop_poll(struct file *file, poll_table *wait);
 
 #endif /* _MEDIA_V4L2_MEM2MEM_H */
diff --git a/include/media/videobuf2-core.h b/include/media/videobuf2-core.h
index 9b02aeba4108..dbfb8876fbf9 100644
--- a/include/media/videobuf2-core.h
+++ b/include/media/videobuf2-core.h
@@ -146,7 +146,7 @@ struct vb2_mem_ops {
 
 	unsigned int	(*num_users)(void *buf_priv);
 
-	int		(*mmap)(void *buf_priv, struct vm_area_struct *vma);
+	int		(*mmap)(void *buf_priv, struct mm_area *vma);
 };
 
 /**
@@ -1033,7 +1033,7 @@ void vb2_queue_error(struct vb2_queue *q);
 /**
  * vb2_mmap() - map video buffers into application address space.
  * @q:		pointer to &struct vb2_queue with videobuf2 queue.
- * @vma:	pointer to &struct vm_area_struct with the vma passed
+ * @vma:	pointer to &struct mm_area with the vma passed
  *		to the mmap file operation handler in the driver.
  *
  * Should be called from mmap file operation handler of a driver.
@@ -1052,7 +1052,7 @@ void vb2_queue_error(struct vb2_queue *q);
  * The return values from this function are intended to be directly returned
  * from the mmap handler in driver.
  */
-int vb2_mmap(struct vb2_queue *q, struct vm_area_struct *vma);
+int vb2_mmap(struct vb2_queue *q, struct mm_area *vma);
 
 #ifndef CONFIG_MMU
 /**
diff --git a/include/media/videobuf2-v4l2.h b/include/media/videobuf2-v4l2.h
index 77ce8238ab30..cd941372aab9 100644
--- a/include/media/videobuf2-v4l2.h
+++ b/include/media/videobuf2-v4l2.h
@@ -339,7 +339,7 @@ int vb2_ioctl_remove_bufs(struct file *file, void *priv,
 
 /* struct v4l2_file_operations helpers */
 
-int vb2_fop_mmap(struct file *file, struct vm_area_struct *vma);
+int vb2_fop_mmap(struct file *file, struct mm_area *vma);
 int vb2_fop_release(struct file *file);
 int _vb2_fop_release(struct file *file, struct mutex *lock);
 ssize_t vb2_fop_write(struct file *file, const char __user *buf,
diff --git a/include/net/sock.h b/include/net/sock.h
index 8daf1b3b12c6..d75880bd2052 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -1849,7 +1849,7 @@ int sock_no_sendmsg(struct socket *, struct msghdr *, size_t);
 int sock_no_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t len);
 int sock_no_recvmsg(struct socket *, struct msghdr *, size_t, int);
 int sock_no_mmap(struct file *file, struct socket *sock,
-		 struct vm_area_struct *vma);
+		 struct mm_area *vma);
 
 /*
  * Functions to fill in entries in struct proto_ops when a protocol
diff --git a/include/net/tcp.h b/include/net/tcp.h
index df04dc09c519..556704058c39 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -469,7 +469,7 @@ void tcp_recv_timestamp(struct msghdr *msg, const struct sock *sk,
 void tcp_data_ready(struct sock *sk);
 #ifdef CONFIG_MMU
 int tcp_mmap(struct file *file, struct socket *sock,
-	     struct vm_area_struct *vma);
+	     struct mm_area *vma);
 #endif
 void tcp_parse_options(const struct net *net, const struct sk_buff *skb,
 		       struct tcp_options_received *opt_rx,
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index d42eae69d9a8..8055f6f88816 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2449,7 +2449,7 @@ struct ib_device_ops {
 	int (*alloc_ucontext)(struct ib_ucontext *context,
 			      struct ib_udata *udata);
 	void (*dealloc_ucontext)(struct ib_ucontext *context);
-	int (*mmap)(struct ib_ucontext *context, struct vm_area_struct *vma);
+	int (*mmap)(struct ib_ucontext *context, struct mm_area *vma);
 	/**
 	 * This will be called once refcount of an entry in mmap_xa reaches
 	 * zero. The type of the memory that was mapped may differ between
@@ -2976,7 +2976,7 @@ void  ib_set_client_data(struct ib_device *device, struct ib_client *client,
 void ib_set_device_ops(struct ib_device *device,
 		       const struct ib_device_ops *ops);
 
-int rdma_user_mmap_io(struct ib_ucontext *ucontext, struct vm_area_struct *vma,
+int rdma_user_mmap_io(struct ib_ucontext *ucontext, struct mm_area *vma,
 		      unsigned long pfn, unsigned long size, pgprot_t prot,
 		      struct rdma_user_mmap_entry *entry);
 int rdma_user_mmap_entry_insert(struct ib_ucontext *ucontext,
@@ -3009,7 +3009,7 @@ rdma_user_mmap_entry_get_pgoff(struct ib_ucontext *ucontext,
 			       unsigned long pgoff);
 struct rdma_user_mmap_entry *
 rdma_user_mmap_entry_get(struct ib_ucontext *ucontext,
-			 struct vm_area_struct *vma);
+			 struct mm_area *vma);
 void rdma_user_mmap_entry_put(struct rdma_user_mmap_entry *entry);
 
 void rdma_user_mmap_entry_remove(struct rdma_user_mmap_entry *entry);
diff --git a/include/rdma/rdma_vt.h b/include/rdma/rdma_vt.h
index c429d6ddb129..7baff31ec232 100644
--- a/include/rdma/rdma_vt.h
+++ b/include/rdma/rdma_vt.h
@@ -167,7 +167,7 @@ struct rvt_ah {
 
 /*
  * This structure is used by rvt_mmap() to validate an offset
- * when an mmap() request is made.  The vm_area_struct then uses
+ * when an mmap() request is made.  The mm_area then uses
  * this as its vm_private_data.
  */
 struct rvt_mmap_info {
diff --git a/include/sound/compress_driver.h b/include/sound/compress_driver.h
index b55c9eeb2b54..cbfb46ad05de 100644
--- a/include/sound/compress_driver.h
+++ b/include/sound/compress_driver.h
@@ -165,7 +165,7 @@ struct snd_compr_ops {
 	int (*copy)(struct snd_compr_stream *stream, char __user *buf,
 		       size_t count);
 	int (*mmap)(struct snd_compr_stream *stream,
-			struct vm_area_struct *vma);
+			struct mm_area *vma);
 	int (*ack)(struct snd_compr_stream *stream, size_t bytes);
 	int (*get_caps) (struct snd_compr_stream *stream,
 			struct snd_compr_caps *caps);
diff --git a/include/sound/hwdep.h b/include/sound/hwdep.h
index b0da633184cd..1ba044d50614 100644
--- a/include/sound/hwdep.h
+++ b/include/sound/hwdep.h
@@ -29,7 +29,7 @@ struct snd_hwdep_ops {
 	int (*ioctl_compat)(struct snd_hwdep *hw, struct file *file,
 			    unsigned int cmd, unsigned long arg);
 	int (*mmap)(struct snd_hwdep *hw, struct file *file,
-		    struct vm_area_struct *vma);
+		    struct mm_area *vma);
 	int (*dsp_status)(struct snd_hwdep *hw,
 			  struct snd_hwdep_dsp_status *status);
 	int (*dsp_load)(struct snd_hwdep *hw,
diff --git a/include/sound/info.h b/include/sound/info.h
index adbc506860d6..369b6ba88869 100644
--- a/include/sound/info.h
+++ b/include/sound/info.h
@@ -54,7 +54,7 @@ struct snd_info_entry_ops {
 		     struct file *file, unsigned int cmd, unsigned long arg);
 	int (*mmap)(struct snd_info_entry *entry, void *file_private_data,
 		    struct inode *inode, struct file *file,
-		    struct vm_area_struct *vma);
+		    struct mm_area *vma);
 };
 
 struct snd_info_entry {
diff --git a/include/sound/memalloc.h b/include/sound/memalloc.h
index 9dd475cf4e8c..38a2885a39e3 100644
--- a/include/sound/memalloc.h
+++ b/include/sound/memalloc.h
@@ -13,7 +13,7 @@
 #include <asm/page.h>
 
 struct device;
-struct vm_area_struct;
+struct mm_area;
 struct sg_table;
 
 /*
@@ -83,7 +83,7 @@ int snd_dma_alloc_pages_fallback(int type, struct device *dev, size_t size,
                                  struct snd_dma_buffer *dmab);
 void snd_dma_free_pages(struct snd_dma_buffer *dmab);
 int snd_dma_buffer_mmap(struct snd_dma_buffer *dmab,
-			struct vm_area_struct *area);
+			struct mm_area *area);
 
 enum snd_dma_sync_mode { SNDRV_DMA_SYNC_CPU, SNDRV_DMA_SYNC_DEVICE };
 #ifdef CONFIG_HAS_DMA
diff --git a/include/sound/pcm.h b/include/sound/pcm.h
index 8becb4504887..10129d8837e3 100644
--- a/include/sound/pcm.h
+++ b/include/sound/pcm.h
@@ -74,7 +74,7 @@ struct snd_pcm_ops {
 		    unsigned long pos, struct iov_iter *iter, unsigned long bytes);
 	struct page *(*page)(struct snd_pcm_substream *substream,
 			     unsigned long offset);
-	int (*mmap)(struct snd_pcm_substream *substream, struct vm_area_struct *vma);
+	int (*mmap)(struct snd_pcm_substream *substream, struct mm_area *vma);
 	int (*ack)(struct snd_pcm_substream *substream);
 };
 
@@ -605,7 +605,7 @@ void snd_pcm_release_substream(struct snd_pcm_substream *substream);
 int snd_pcm_attach_substream(struct snd_pcm *pcm, int stream, struct file *file,
 			     struct snd_pcm_substream **rsubstream);
 void snd_pcm_detach_substream(struct snd_pcm_substream *substream);
-int snd_pcm_mmap_data(struct snd_pcm_substream *substream, struct file *file, struct vm_area_struct *area);
+int snd_pcm_mmap_data(struct snd_pcm_substream *substream, struct file *file, struct mm_area *area);
 
 
 #ifdef CONFIG_SND_DEBUG
@@ -1394,11 +1394,11 @@ snd_pcm_sgbuf_get_chunk_size(struct snd_pcm_substream *substream,
 }
 
 int snd_pcm_lib_default_mmap(struct snd_pcm_substream *substream,
-			     struct vm_area_struct *area);
+			     struct mm_area *area);
 /* mmap for io-memory area */
 #if defined(CONFIG_X86) || defined(CONFIG_PPC) || defined(CONFIG_ALPHA)
 #define SNDRV_PCM_INFO_MMAP_IOMEM	SNDRV_PCM_INFO_MMAP
-int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream, struct vm_area_struct *area);
+int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream, struct mm_area *area);
 #else
 #define SNDRV_PCM_INFO_MMAP_IOMEM	0
 #define snd_pcm_lib_mmap_iomem	NULL
diff --git a/include/sound/soc-component.h b/include/sound/soc-component.h
index 61534ac0edd1..4c37806639b1 100644
--- a/include/sound/soc-component.h
+++ b/include/sound/soc-component.h
@@ -53,7 +53,7 @@ struct snd_compress_ops {
 		    size_t count);
 	int (*mmap)(struct snd_soc_component *component,
 		    struct snd_compr_stream *stream,
-		    struct vm_area_struct *vma);
+		    struct mm_area *vma);
 	int (*ack)(struct snd_soc_component *component,
 		   struct snd_compr_stream *stream, size_t bytes);
 	int (*get_caps)(struct snd_soc_component *component,
@@ -146,7 +146,7 @@ struct snd_soc_component_driver {
 			     unsigned long offset);
 	int (*mmap)(struct snd_soc_component *component,
 		    struct snd_pcm_substream *substream,
-		    struct vm_area_struct *vma);
+		    struct mm_area *vma);
 	int (*ack)(struct snd_soc_component *component,
 		   struct snd_pcm_substream *substream);
 	snd_pcm_sframes_t (*delay)(struct snd_soc_component *component,
@@ -517,7 +517,7 @@ int snd_soc_pcm_component_copy(struct snd_pcm_substream *substream,
 struct page *snd_soc_pcm_component_page(struct snd_pcm_substream *substream,
 					unsigned long offset);
 int snd_soc_pcm_component_mmap(struct snd_pcm_substream *substream,
-			       struct vm_area_struct *vma);
+			       struct mm_area *vma);
 int snd_soc_pcm_component_new(struct snd_soc_pcm_runtime *rtd);
 void snd_soc_pcm_component_free(struct snd_soc_pcm_runtime *rtd);
 int snd_soc_pcm_component_prepare(struct snd_pcm_substream *substream);
diff --git a/include/trace/events/mmap.h b/include/trace/events/mmap.h
index f8d61485de16..516a46ff75a5 100644
--- a/include/trace/events/mmap.h
+++ b/include/trace/events/mmap.h
@@ -69,13 +69,13 @@ TRACE_EVENT(vma_mas_szero,
 );
 
 TRACE_EVENT(vma_store,
-	TP_PROTO(struct maple_tree *mt, struct vm_area_struct *vma),
+	TP_PROTO(struct maple_tree *mt, struct mm_area *vma),
 
 	TP_ARGS(mt, vma),
 
 	TP_STRUCT__entry(
 			__field(struct maple_tree *, mt)
-			__field(struct vm_area_struct *, vma)
+			__field(struct mm_area *, vma)
 			__field(unsigned long, vm_start)
 			__field(unsigned long, vm_end)
 	),
diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h
index 8994e97d86c1..79ee1636a6ec 100644
--- a/include/trace/events/sched.h
+++ b/include/trace/events/sched.h
@@ -720,7 +720,7 @@ NUMAB_SKIP_REASON
 
 TRACE_EVENT(sched_skip_vma_numa,
 
-	TP_PROTO(struct mm_struct *mm, struct vm_area_struct *vma,
+	TP_PROTO(struct mm_struct *mm, struct mm_area *vma,
 		 enum numa_vmaskip_reason reason),
 
 	TP_ARGS(mm, vma, reason),
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index 28705ae67784..7894f9c2ae9b 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -5368,7 +5368,7 @@ union bpf_attr {
  *
  *		The expected callback signature is
  *
- *		long (\*callback_fn)(struct task_struct \*task, struct vm_area_struct \*vma, void \*callback_ctx);
+ *		long (\*callback_fn)(struct task_struct \*task, struct mm_area \*vma, void \*callback_ctx);
  *
  *	Return
  *		0 on success.
diff --git a/include/xen/xen-ops.h b/include/xen/xen-ops.h
index 47f11bec5e90..9c4c2e081be3 100644
--- a/include/xen/xen-ops.h
+++ b/include/xen/xen-ops.h
@@ -44,11 +44,11 @@ int xen_setup_shutdown_event(void);
 extern unsigned long *xen_contiguous_bitmap;
 
 #if defined(CONFIG_XEN_PV)
-int xen_remap_pfn(struct vm_area_struct *vma, unsigned long addr,
+int xen_remap_pfn(struct mm_area *vma, unsigned long addr,
 		  xen_pfn_t *pfn, int nr, int *err_ptr, pgprot_t prot,
 		  unsigned int domid, bool no_translate);
 #else
-static inline int xen_remap_pfn(struct vm_area_struct *vma, unsigned long addr,
+static inline int xen_remap_pfn(struct mm_area *vma, unsigned long addr,
 				xen_pfn_t *pfn, int nr, int *err_ptr,
 				pgprot_t prot,  unsigned int domid,
 				bool no_translate)
@@ -58,23 +58,23 @@ static inline int xen_remap_pfn(struct vm_area_struct *vma, unsigned long addr,
 }
 #endif
 
-struct vm_area_struct;
+struct mm_area;
 
 #ifdef CONFIG_XEN_AUTO_XLATE
-int xen_xlate_remap_gfn_array(struct vm_area_struct *vma,
+int xen_xlate_remap_gfn_array(struct mm_area *vma,
 			      unsigned long addr,
 			      xen_pfn_t *gfn, int nr,
 			      int *err_ptr, pgprot_t prot,
 			      unsigned int domid,
 			      struct page **pages);
-int xen_xlate_unmap_gfn_range(struct vm_area_struct *vma,
+int xen_xlate_unmap_gfn_range(struct mm_area *vma,
 			      int nr, struct page **pages);
 #else
 /*
  * These two functions are called from arch/x86/xen/mmu.c and so stubs
  * are needed for a configuration not specifying CONFIG_XEN_AUTO_XLATE.
  */
-static inline int xen_xlate_remap_gfn_array(struct vm_area_struct *vma,
+static inline int xen_xlate_remap_gfn_array(struct mm_area *vma,
 					    unsigned long addr,
 					    xen_pfn_t *gfn, int nr,
 					    int *err_ptr, pgprot_t prot,
@@ -84,14 +84,14 @@ static inline int xen_xlate_remap_gfn_array(struct vm_area_struct *vma,
 	return -EOPNOTSUPP;
 }
 
-static inline int xen_xlate_unmap_gfn_range(struct vm_area_struct *vma,
+static inline int xen_xlate_unmap_gfn_range(struct mm_area *vma,
 					    int nr, struct page **pages)
 {
 	return -EOPNOTSUPP;
 }
 #endif
 
-int xen_remap_vma_range(struct vm_area_struct *vma, unsigned long addr,
+int xen_remap_vma_range(struct mm_area *vma, unsigned long addr,
 			unsigned long len);
 
 /*
@@ -111,7 +111,7 @@ int xen_remap_vma_range(struct vm_area_struct *vma, unsigned long addr,
  * Returns the number of successfully mapped frames, or a -ve error
  * code.
  */
-static inline int xen_remap_domain_gfn_array(struct vm_area_struct *vma,
+static inline int xen_remap_domain_gfn_array(struct mm_area *vma,
 					     unsigned long addr,
 					     xen_pfn_t *gfn, int nr,
 					     int *err_ptr, pgprot_t prot,
@@ -147,7 +147,7 @@ static inline int xen_remap_domain_gfn_array(struct vm_area_struct *vma,
  * Returns the number of successfully mapped frames, or a -ve error
  * code.
  */
-static inline int xen_remap_domain_mfn_array(struct vm_area_struct *vma,
+static inline int xen_remap_domain_mfn_array(struct mm_area *vma,
 					     unsigned long addr, xen_pfn_t *mfn,
 					     int nr, int *err_ptr,
 					     pgprot_t prot, unsigned int domid)
@@ -171,7 +171,7 @@ static inline int xen_remap_domain_mfn_array(struct vm_area_struct *vma,
  * Returns the number of successfully mapped frames, or a -ve error
  * code.
  */
-static inline int xen_remap_domain_gfn_range(struct vm_area_struct *vma,
+static inline int xen_remap_domain_gfn_range(struct mm_area *vma,
 					     unsigned long addr,
 					     xen_pfn_t gfn, int nr,
 					     pgprot_t prot, unsigned int domid,
@@ -183,7 +183,7 @@ static inline int xen_remap_domain_gfn_range(struct vm_area_struct *vma,
 	return xen_remap_pfn(vma, addr, &gfn, nr, NULL, prot, domid, false);
 }
 
-int xen_unmap_domain_gfn_range(struct vm_area_struct *vma,
+int xen_unmap_domain_gfn_range(struct mm_area *vma,
 			       int numpgs, struct page **pages);
 
 int xen_xlate_map_ballooned_pages(xen_pfn_t **pfns, void **vaddr,
diff --git a/io_uring/memmap.c b/io_uring/memmap.c
index 76fcc79656b0..d606163f0524 100644
--- a/io_uring/memmap.c
+++ b/io_uring/memmap.c
@@ -306,7 +306,7 @@ static void *io_uring_validate_mmap_request(struct file *file, loff_t pgoff,
 
 static int io_region_mmap(struct io_ring_ctx *ctx,
 			  struct io_mapped_region *mr,
-			  struct vm_area_struct *vma,
+			  struct mm_area *vma,
 			  unsigned max_pages)
 {
 	unsigned long nr_pages = min(mr->nr_pages, max_pages);
@@ -315,7 +315,7 @@ static int io_region_mmap(struct io_ring_ctx *ctx,
 	return vm_insert_pages(vma, vma->vm_start, mr->pages, &nr_pages);
 }
 
-__cold int io_uring_mmap(struct file *file, struct vm_area_struct *vma)
+__cold int io_uring_mmap(struct file *file, struct mm_area *vma)
 {
 	struct io_ring_ctx *ctx = file->private_data;
 	size_t sz = vma->vm_end - vma->vm_start;
@@ -389,7 +389,7 @@ unsigned long io_uring_get_unmapped_area(struct file *filp, unsigned long addr,
 
 #else /* !CONFIG_MMU */
 
-int io_uring_mmap(struct file *file, struct vm_area_struct *vma)
+int io_uring_mmap(struct file *file, struct mm_area *vma)
 {
 	return is_nommu_shared_mapping(vma->vm_flags) ? 0 : -EINVAL;
 }
diff --git a/io_uring/memmap.h b/io_uring/memmap.h
index dad0aa5b1b45..67e0335cfe87 100644
--- a/io_uring/memmap.h
+++ b/io_uring/memmap.h
@@ -12,7 +12,7 @@ unsigned int io_uring_nommu_mmap_capabilities(struct file *file);
 unsigned long io_uring_get_unmapped_area(struct file *file, unsigned long addr,
 					 unsigned long len, unsigned long pgoff,
 					 unsigned long flags);
-int io_uring_mmap(struct file *file, struct vm_area_struct *vma);
+int io_uring_mmap(struct file *file, struct mm_area *vma);
 
 void io_free_region(struct io_ring_ctx *ctx, struct io_mapped_region *mr);
 int io_create_region(struct io_ring_ctx *ctx, struct io_mapped_region *mr,
diff --git a/ipc/shm.c b/ipc/shm.c
index 99564c870084..b1f32d82e02b 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -3,7 +3,7 @@
  * linux/ipc/shm.c
  * Copyright (C) 1992, 1993 Krishna Balasubramanian
  *	 Many improvements/fixes by Bruno Haible.
- * Replaced `struct shm_desc' by `struct vm_area_struct', July 1994.
+ * Replaced `struct shm_desc' by `struct mm_area', July 1994.
  * Fixed the shm swap deallocation (shm_unuse()), August 1998 Andrea Arcangeli.
  *
  * /proc/sysvipc/shm support (c) 1999 Dragos Acostachioaie <dragos@iname.com>
@@ -99,8 +99,8 @@ static const struct vm_operations_struct shm_vm_ops;
 	ipc_unlock(&(shp)->shm_perm)
 
 static int newseg(struct ipc_namespace *, struct ipc_params *);
-static void shm_open(struct vm_area_struct *vma);
-static void shm_close(struct vm_area_struct *vma);
+static void shm_open(struct mm_area *vma);
+static void shm_close(struct mm_area *vma);
 static void shm_destroy(struct ipc_namespace *ns, struct shmid_kernel *shp);
 #ifdef CONFIG_PROC_FS
 static int sysvipc_shm_proc_show(struct seq_file *s, void *it);
@@ -299,7 +299,7 @@ static int __shm_open(struct shm_file_data *sfd)
 }
 
 /* This is called by fork, once for every shm attach. */
-static void shm_open(struct vm_area_struct *vma)
+static void shm_open(struct mm_area *vma)
 {
 	struct file *file = vma->vm_file;
 	struct shm_file_data *sfd = shm_file_data(file);
@@ -393,7 +393,7 @@ static void __shm_close(struct shm_file_data *sfd)
 	up_write(&shm_ids(ns).rwsem);
 }
 
-static void shm_close(struct vm_area_struct *vma)
+static void shm_close(struct mm_area *vma)
 {
 	struct file *file = vma->vm_file;
 	struct shm_file_data *sfd = shm_file_data(file);
@@ -540,7 +540,7 @@ static vm_fault_t shm_fault(struct vm_fault *vmf)
 	return sfd->vm_ops->fault(vmf);
 }
 
-static int shm_may_split(struct vm_area_struct *vma, unsigned long addr)
+static int shm_may_split(struct mm_area *vma, unsigned long addr)
 {
 	struct file *file = vma->vm_file;
 	struct shm_file_data *sfd = shm_file_data(file);
@@ -551,7 +551,7 @@ static int shm_may_split(struct vm_area_struct *vma, unsigned long addr)
 	return 0;
 }
 
-static unsigned long shm_pagesize(struct vm_area_struct *vma)
+static unsigned long shm_pagesize(struct mm_area *vma)
 {
 	struct file *file = vma->vm_file;
 	struct shm_file_data *sfd = shm_file_data(file);
@@ -563,7 +563,7 @@ static unsigned long shm_pagesize(struct vm_area_struct *vma)
 }
 
 #ifdef CONFIG_NUMA
-static int shm_set_policy(struct vm_area_struct *vma, struct mempolicy *mpol)
+static int shm_set_policy(struct mm_area *vma, struct mempolicy *mpol)
 {
 	struct shm_file_data *sfd = shm_file_data(vma->vm_file);
 	int err = 0;
@@ -573,7 +573,7 @@ static int shm_set_policy(struct vm_area_struct *vma, struct mempolicy *mpol)
 	return err;
 }
 
-static struct mempolicy *shm_get_policy(struct vm_area_struct *vma,
+static struct mempolicy *shm_get_policy(struct mm_area *vma,
 					unsigned long addr, pgoff_t *ilx)
 {
 	struct shm_file_data *sfd = shm_file_data(vma->vm_file);
@@ -585,7 +585,7 @@ static struct mempolicy *shm_get_policy(struct vm_area_struct *vma,
 }
 #endif
 
-static int shm_mmap(struct file *file, struct vm_area_struct *vma)
+static int shm_mmap(struct file *file, struct mm_area *vma)
 {
 	struct shm_file_data *sfd = shm_file_data(file);
 	int ret;
@@ -1723,7 +1723,7 @@ COMPAT_SYSCALL_DEFINE3(shmat, int, shmid, compat_uptr_t, shmaddr, int, shmflg)
 long ksys_shmdt(char __user *shmaddr)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr = (unsigned long)shmaddr;
 	int retval = -EINVAL;
 #ifdef CONFIG_MMU
diff --git a/kernel/acct.c b/kernel/acct.c
index 6520baa13669..8f1124fddaa9 100644
--- a/kernel/acct.c
+++ b/kernel/acct.c
@@ -592,7 +592,7 @@ void acct_collect(long exitcode, int group_dead)
 	if (group_dead && current->mm) {
 		struct mm_struct *mm = current->mm;
 		VMA_ITERATOR(vmi, mm, 0);
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 
 		mmap_read_lock(mm);
 		for_each_vma(vmi, vma)
diff --git a/kernel/bpf/arena.c b/kernel/bpf/arena.c
index 0d56cea71602..bfefa32adb89 100644
--- a/kernel/bpf/arena.c
+++ b/kernel/bpf/arena.c
@@ -220,12 +220,12 @@ static u64 arena_map_mem_usage(const struct bpf_map *map)
 }
 
 struct vma_list {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct list_head head;
 	refcount_t mmap_count;
 };
 
-static int remember_vma(struct bpf_arena *arena, struct vm_area_struct *vma)
+static int remember_vma(struct bpf_arena *arena, struct mm_area *vma)
 {
 	struct vma_list *vml;
 
@@ -239,14 +239,14 @@ static int remember_vma(struct bpf_arena *arena, struct vm_area_struct *vma)
 	return 0;
 }
 
-static void arena_vm_open(struct vm_area_struct *vma)
+static void arena_vm_open(struct mm_area *vma)
 {
 	struct vma_list *vml = vma->vm_private_data;
 
 	refcount_inc(&vml->mmap_count);
 }
 
-static void arena_vm_close(struct vm_area_struct *vma)
+static void arena_vm_close(struct mm_area *vma)
 {
 	struct bpf_map *map = vma->vm_file->private_data;
 	struct bpf_arena *arena = container_of(map, struct bpf_arena, map);
@@ -345,7 +345,7 @@ static unsigned long arena_get_unmapped_area(struct file *filp, unsigned long ad
 	return round_up(ret, SZ_4G);
 }
 
-static int arena_map_mmap(struct bpf_map *map, struct vm_area_struct *vma)
+static int arena_map_mmap(struct bpf_map *map, struct mm_area *vma)
 {
 	struct bpf_arena *arena = container_of(map, struct bpf_arena, map);
 
diff --git a/kernel/bpf/arraymap.c b/kernel/bpf/arraymap.c
index eb28c0f219ee..79dbdb433b55 100644
--- a/kernel/bpf/arraymap.c
+++ b/kernel/bpf/arraymap.c
@@ -557,7 +557,7 @@ static int array_map_check_btf(const struct bpf_map *map,
 	return 0;
 }
 
-static int array_map_mmap(struct bpf_map *map, struct vm_area_struct *vma)
+static int array_map_mmap(struct bpf_map *map, struct mm_area *vma)
 {
 	struct bpf_array *array = container_of(map, struct bpf_array, map);
 	pgoff_t pgoff = PAGE_ALIGN(sizeof(*array)) >> PAGE_SHIFT;
diff --git a/kernel/bpf/ringbuf.c b/kernel/bpf/ringbuf.c
index 1499d8caa9a3..c59325124422 100644
--- a/kernel/bpf/ringbuf.c
+++ b/kernel/bpf/ringbuf.c
@@ -258,7 +258,7 @@ static int ringbuf_map_get_next_key(struct bpf_map *map, void *key,
 	return -ENOTSUPP;
 }
 
-static int ringbuf_map_mmap_kern(struct bpf_map *map, struct vm_area_struct *vma)
+static int ringbuf_map_mmap_kern(struct bpf_map *map, struct mm_area *vma)
 {
 	struct bpf_ringbuf_map *rb_map;
 
@@ -274,7 +274,7 @@ static int ringbuf_map_mmap_kern(struct bpf_map *map, struct vm_area_struct *vma
 				   vma->vm_pgoff + RINGBUF_PGOFF);
 }
 
-static int ringbuf_map_mmap_user(struct bpf_map *map, struct vm_area_struct *vma)
+static int ringbuf_map_mmap_user(struct bpf_map *map, struct mm_area *vma)
 {
 	struct bpf_ringbuf_map *rb_map;
 
diff --git a/kernel/bpf/stackmap.c b/kernel/bpf/stackmap.c
index 3615c06b7dfa..9870b4a64f23 100644
--- a/kernel/bpf/stackmap.c
+++ b/kernel/bpf/stackmap.c
@@ -124,7 +124,7 @@ static struct bpf_map *stack_map_alloc(union bpf_attr *attr)
 	return ERR_PTR(err);
 }
 
-static int fetch_build_id(struct vm_area_struct *vma, unsigned char *build_id, bool may_fault)
+static int fetch_build_id(struct mm_area *vma, unsigned char *build_id, bool may_fault)
 {
 	return may_fault ? build_id_parse(vma, build_id, NULL)
 			 : build_id_parse_nofault(vma, build_id, NULL);
@@ -146,7 +146,7 @@ static void stack_map_get_build_id_offset(struct bpf_stack_build_id *id_offs,
 	int i;
 	struct mmap_unlock_irq_work *work = NULL;
 	bool irq_work_busy = bpf_mmap_unlock_get_irq_work(&work);
-	struct vm_area_struct *vma, *prev_vma = NULL;
+	struct mm_area *vma, *prev_vma = NULL;
 	const char *prev_build_id;
 
 	/* If the irq_work is in use, fall back to report ips. Same
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index 9794446bc8c6..e4bd08eba388 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -1030,7 +1030,7 @@ static ssize_t bpf_dummy_write(struct file *filp, const char __user *buf,
 }
 
 /* called for any extra memory-mapped regions (except initial) */
-static void bpf_map_mmap_open(struct vm_area_struct *vma)
+static void bpf_map_mmap_open(struct mm_area *vma)
 {
 	struct bpf_map *map = vma->vm_file->private_data;
 
@@ -1039,7 +1039,7 @@ static void bpf_map_mmap_open(struct vm_area_struct *vma)
 }
 
 /* called for all unmapped memory region (including initial) */
-static void bpf_map_mmap_close(struct vm_area_struct *vma)
+static void bpf_map_mmap_close(struct mm_area *vma)
 {
 	struct bpf_map *map = vma->vm_file->private_data;
 
@@ -1052,7 +1052,7 @@ static const struct vm_operations_struct bpf_map_default_vmops = {
 	.close		= bpf_map_mmap_close,
 };
 
-static int bpf_map_mmap(struct file *filp, struct vm_area_struct *vma)
+static int bpf_map_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct bpf_map *map = filp->private_data;
 	int err = 0;
diff --git a/kernel/bpf/task_iter.c b/kernel/bpf/task_iter.c
index 98d9b4c0daff..3f58b35ce94e 100644
--- a/kernel/bpf/task_iter.c
+++ b/kernel/bpf/task_iter.c
@@ -410,7 +410,7 @@ struct bpf_iter_seq_task_vma_info {
 	struct bpf_iter_seq_task_common common;
 	struct task_struct *task;
 	struct mm_struct *mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	u32 tid;
 	unsigned long prev_vm_start;
 	unsigned long prev_vm_end;
@@ -422,11 +422,11 @@ enum bpf_task_vma_iter_find_op {
 	task_vma_iter_find_vma,    /* use find_vma() to find next vma */
 };
 
-static struct vm_area_struct *
+static struct mm_area *
 task_vma_seq_get_next(struct bpf_iter_seq_task_vma_info *info)
 {
 	enum bpf_task_vma_iter_find_op op;
-	struct vm_area_struct *curr_vma;
+	struct mm_area *curr_vma;
 	struct task_struct *curr_task;
 	struct mm_struct *curr_mm;
 	u32 saved_tid = info->tid;
@@ -577,7 +577,7 @@ task_vma_seq_get_next(struct bpf_iter_seq_task_vma_info *info)
 static void *task_vma_seq_start(struct seq_file *seq, loff_t *pos)
 {
 	struct bpf_iter_seq_task_vma_info *info = seq->private;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	vma = task_vma_seq_get_next(info);
 	if (vma && *pos == 0)
@@ -597,11 +597,11 @@ static void *task_vma_seq_next(struct seq_file *seq, void *v, loff_t *pos)
 struct bpf_iter__task_vma {
 	__bpf_md_ptr(struct bpf_iter_meta *, meta);
 	__bpf_md_ptr(struct task_struct *, task);
-	__bpf_md_ptr(struct vm_area_struct *, vma);
+	__bpf_md_ptr(struct mm_area *, vma);
 };
 
 DEFINE_BPF_ITER_FUNC(task_vma, struct bpf_iter_meta *meta,
-		     struct task_struct *task, struct vm_area_struct *vma)
+		     struct task_struct *task, struct mm_area *vma)
 
 static int __task_vma_seq_show(struct seq_file *seq, bool in_stop)
 {
@@ -752,7 +752,7 @@ BPF_CALL_5(bpf_find_vma, struct task_struct *, task, u64, start,
 	   bpf_callback_t, callback_fn, void *, callback_ctx, u64, flags)
 {
 	struct mmap_unlock_irq_work *work = NULL;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	bool irq_work_busy = false;
 	struct mm_struct *mm;
 	int ret = -ENOENT;
@@ -859,7 +859,7 @@ __bpf_kfunc int bpf_iter_task_vma_new(struct bpf_iter_task_vma *it,
 	return err;
 }
 
-__bpf_kfunc struct vm_area_struct *bpf_iter_task_vma_next(struct bpf_iter_task_vma *it)
+__bpf_kfunc struct mm_area *bpf_iter_task_vma_next(struct bpf_iter_task_vma *it)
 {
 	struct bpf_iter_task_vma_kern *kit = (void *)it;
 
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 54c6953a8b84..efbe5060d0e9 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -10720,7 +10720,7 @@ static int set_find_vma_callback_state(struct bpf_verifier_env *env,
 	/* bpf_find_vma(struct task_struct *task, u64 addr,
 	 *               void *callback_fn, void *callback_ctx, u64 flags)
 	 * (callback_fn)(struct task_struct *task,
-	 *               struct vm_area_struct *vma, void *callback_ctx);
+	 *               struct mm_area *vma, void *callback_ctx);
 	 */
 	callee->regs[BPF_REG_1] = caller->regs[BPF_REG_1];
 
diff --git a/kernel/dma/coherent.c b/kernel/dma/coherent.c
index 3b2bdca9f1d4..b92e5ddae43f 100644
--- a/kernel/dma/coherent.c
+++ b/kernel/dma/coherent.c
@@ -232,7 +232,7 @@ int dma_release_from_dev_coherent(struct device *dev, int order, void *vaddr)
 }
 
 static int __dma_mmap_from_coherent(struct dma_coherent_mem *mem,
-		struct vm_area_struct *vma, void *vaddr, size_t size, int *ret)
+		struct mm_area *vma, void *vaddr, size_t size, int *ret)
 {
 	if (mem && vaddr >= mem->virt_base && vaddr + size <=
 		   (mem->virt_base + ((dma_addr_t)mem->size << PAGE_SHIFT))) {
@@ -268,7 +268,7 @@ static int __dma_mmap_from_coherent(struct dma_coherent_mem *mem,
  * should return @ret, or 0 if they should proceed with mapping memory from
  * generic areas.
  */
-int dma_mmap_from_dev_coherent(struct device *dev, struct vm_area_struct *vma,
+int dma_mmap_from_dev_coherent(struct device *dev, struct mm_area *vma,
 			   void *vaddr, size_t size, int *ret)
 {
 	struct dma_coherent_mem *mem = dev_get_coherent_memory(dev);
@@ -298,7 +298,7 @@ int dma_release_from_global_coherent(int order, void *vaddr)
 			vaddr);
 }
 
-int dma_mmap_from_global_coherent(struct vm_area_struct *vma, void *vaddr,
+int dma_mmap_from_global_coherent(struct mm_area *vma, void *vaddr,
 				   size_t size, int *ret)
 {
 	if (!dma_coherent_default_memory)
diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c
index b8fe0b3d0ffb..0dba425ab6bf 100644
--- a/kernel/dma/direct.c
+++ b/kernel/dma/direct.c
@@ -537,7 +537,7 @@ bool dma_direct_can_mmap(struct device *dev)
 		IS_ENABLED(CONFIG_DMA_NONCOHERENT_MMAP);
 }
 
-int dma_direct_mmap(struct device *dev, struct vm_area_struct *vma,
+int dma_direct_mmap(struct device *dev, struct mm_area *vma,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs)
 {
diff --git a/kernel/dma/direct.h b/kernel/dma/direct.h
index d2c0b7e632fc..4ce4be1cad72 100644
--- a/kernel/dma/direct.h
+++ b/kernel/dma/direct.h
@@ -14,7 +14,7 @@ int dma_direct_get_sgtable(struct device *dev, struct sg_table *sgt,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs);
 bool dma_direct_can_mmap(struct device *dev);
-int dma_direct_mmap(struct device *dev, struct vm_area_struct *vma,
+int dma_direct_mmap(struct device *dev, struct mm_area *vma,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs);
 bool dma_direct_need_sync(struct device *dev, dma_addr_t dma_addr);
diff --git a/kernel/dma/dummy.c b/kernel/dma/dummy.c
index 92de80e5b057..eb7c1752b54e 100644
--- a/kernel/dma/dummy.c
+++ b/kernel/dma/dummy.c
@@ -4,7 +4,7 @@
  */
 #include <linux/dma-map-ops.h>
 
-static int dma_dummy_mmap(struct device *dev, struct vm_area_struct *vma,
+static int dma_dummy_mmap(struct device *dev, struct mm_area *vma,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs)
 {
diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
index cda127027e48..37cfbcb1544c 100644
--- a/kernel/dma/mapping.c
+++ b/kernel/dma/mapping.c
@@ -536,7 +536,7 @@ EXPORT_SYMBOL_GPL(dma_can_mmap);
 /**
  * dma_mmap_attrs - map a coherent DMA allocation into user space
  * @dev: valid struct device pointer, or NULL for ISA and EISA-like devices
- * @vma: vm_area_struct describing requested user mapping
+ * @vma: mm_area describing requested user mapping
  * @cpu_addr: kernel CPU-view address returned from dma_alloc_attrs
  * @dma_addr: device-view address returned from dma_alloc_attrs
  * @size: size of memory originally requested in dma_alloc_attrs
@@ -546,7 +546,7 @@ EXPORT_SYMBOL_GPL(dma_can_mmap);
  * space.  The coherent DMA buffer must not be freed by the driver until the
  * user space mapping has been released.
  */
-int dma_mmap_attrs(struct device *dev, struct vm_area_struct *vma,
+int dma_mmap_attrs(struct device *dev, struct mm_area *vma,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs)
 {
@@ -725,7 +725,7 @@ void dma_free_pages(struct device *dev, size_t size, struct page *page,
 }
 EXPORT_SYMBOL_GPL(dma_free_pages);
 
-int dma_mmap_pages(struct device *dev, struct vm_area_struct *vma,
+int dma_mmap_pages(struct device *dev, struct mm_area *vma,
 		size_t size, struct page *page)
 {
 	unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
@@ -828,7 +828,7 @@ void dma_vunmap_noncontiguous(struct device *dev, void *vaddr)
 }
 EXPORT_SYMBOL_GPL(dma_vunmap_noncontiguous);
 
-int dma_mmap_noncontiguous(struct device *dev, struct vm_area_struct *vma,
+int dma_mmap_noncontiguous(struct device *dev, struct mm_area *vma,
 		size_t size, struct sg_table *sgt)
 {
 	if (use_dma_iommu(dev))
diff --git a/kernel/dma/ops_helpers.c b/kernel/dma/ops_helpers.c
index 9afd569eadb9..9f7c560c3349 100644
--- a/kernel/dma/ops_helpers.c
+++ b/kernel/dma/ops_helpers.c
@@ -32,7 +32,7 @@ int dma_common_get_sgtable(struct device *dev, struct sg_table *sgt,
 /*
  * Create userspace mapping for the DMA-coherent memory.
  */
-int dma_common_mmap(struct device *dev, struct vm_area_struct *vma,
+int dma_common_mmap(struct device *dev, struct mm_area *vma,
 		void *cpu_addr, dma_addr_t dma_addr, size_t size,
 		unsigned long attrs)
 {
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 128db74e9eab..bf6c0c90f88c 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -6638,7 +6638,7 @@ void ring_buffer_put(struct perf_buffer *rb)
 	call_rcu(&rb->rcu_head, rb_free_rcu);
 }
 
-static void perf_mmap_open(struct vm_area_struct *vma)
+static void perf_mmap_open(struct mm_area *vma)
 {
 	struct perf_event *event = vma->vm_file->private_data;
 
@@ -6662,7 +6662,7 @@ static void perf_pmu_output_stop(struct perf_event *event);
  * the buffer here, where we still have a VM context. This means we need
  * to detach all events redirecting to us.
  */
-static void perf_mmap_close(struct vm_area_struct *vma)
+static void perf_mmap_close(struct mm_area *vma)
 {
 	struct perf_event *event = vma->vm_file->private_data;
 	struct perf_buffer *rb = ring_buffer_get(event);
@@ -6784,7 +6784,7 @@ static const struct vm_operations_struct perf_mmap_vmops = {
 	.pfn_mkwrite	= perf_mmap_pfn_mkwrite,
 };
 
-static int map_range(struct perf_buffer *rb, struct vm_area_struct *vma)
+static int map_range(struct perf_buffer *rb, struct mm_area *vma)
 {
 	unsigned long nr_pages = vma_pages(vma);
 	int err = 0;
@@ -6853,7 +6853,7 @@ static int map_range(struct perf_buffer *rb, struct vm_area_struct *vma)
 	return err;
 }
 
-static int perf_mmap(struct file *file, struct vm_area_struct *vma)
+static int perf_mmap(struct file *file, struct mm_area *vma)
 {
 	struct perf_event *event = file->private_data;
 	unsigned long user_locked, user_lock_limit;
@@ -9155,7 +9155,7 @@ static void perf_event_cgroup(struct cgroup *cgrp)
  */
 
 struct perf_mmap_event {
-	struct vm_area_struct	*vma;
+	struct mm_area	*vma;
 
 	const char		*file_name;
 	int			file_size;
@@ -9181,7 +9181,7 @@ static int perf_event_mmap_match(struct perf_event *event,
 				 void *data)
 {
 	struct perf_mmap_event *mmap_event = data;
-	struct vm_area_struct *vma = mmap_event->vma;
+	struct mm_area *vma = mmap_event->vma;
 	int executable = vma->vm_flags & VM_EXEC;
 
 	return (!executable && event->attr.mmap_data) ||
@@ -9257,7 +9257,7 @@ static void perf_event_mmap_output(struct perf_event *event,
 
 static void perf_event_mmap_event(struct perf_mmap_event *mmap_event)
 {
-	struct vm_area_struct *vma = mmap_event->vma;
+	struct mm_area *vma = mmap_event->vma;
 	struct file *file = vma->vm_file;
 	int maj = 0, min = 0;
 	u64 ino = 0, gen = 0;
@@ -9387,7 +9387,7 @@ static bool perf_addr_filter_match(struct perf_addr_filter *filter,
 }
 
 static bool perf_addr_filter_vma_adjust(struct perf_addr_filter *filter,
-					struct vm_area_struct *vma,
+					struct mm_area *vma,
 					struct perf_addr_filter_range *fr)
 {
 	unsigned long vma_size = vma->vm_end - vma->vm_start;
@@ -9411,7 +9411,7 @@ static bool perf_addr_filter_vma_adjust(struct perf_addr_filter *filter,
 static void __perf_addr_filters_adjust(struct perf_event *event, void *data)
 {
 	struct perf_addr_filters_head *ifh = perf_event_addr_filters(event);
-	struct vm_area_struct *vma = data;
+	struct mm_area *vma = data;
 	struct perf_addr_filter *filter;
 	unsigned int restart = 0, count = 0;
 	unsigned long flags;
@@ -9442,7 +9442,7 @@ static void __perf_addr_filters_adjust(struct perf_event *event, void *data)
 /*
  * Adjust all task's events' filters to the new vma
  */
-static void perf_addr_filters_adjust(struct vm_area_struct *vma)
+static void perf_addr_filters_adjust(struct mm_area *vma)
 {
 	struct perf_event_context *ctx;
 
@@ -9460,7 +9460,7 @@ static void perf_addr_filters_adjust(struct vm_area_struct *vma)
 	rcu_read_unlock();
 }
 
-void perf_event_mmap(struct vm_area_struct *vma)
+void perf_event_mmap(struct mm_area *vma)
 {
 	struct perf_mmap_event mmap_event;
 
@@ -11255,7 +11255,7 @@ static void perf_addr_filter_apply(struct perf_addr_filter *filter,
 				   struct mm_struct *mm,
 				   struct perf_addr_filter_range *fr)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	for_each_vma(vmi, vma) {
diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c
index 615b4e6d22c7..0fb6581e88fd 100644
--- a/kernel/events/uprobes.c
+++ b/kernel/events/uprobes.c
@@ -131,7 +131,7 @@ static void uprobe_warn(struct task_struct *t, const char *msg)
  *	- Return 1 if the specified virtual address is in an
  *	  executable vma.
  */
-static bool valid_vma(struct vm_area_struct *vma, bool is_register)
+static bool valid_vma(struct mm_area *vma, bool is_register)
 {
 	vm_flags_t flags = VM_HUGETLB | VM_MAYEXEC | VM_MAYSHARE;
 
@@ -141,12 +141,12 @@ static bool valid_vma(struct vm_area_struct *vma, bool is_register)
 	return vma->vm_file && (vma->vm_flags & flags) == VM_MAYEXEC;
 }
 
-static unsigned long offset_to_vaddr(struct vm_area_struct *vma, loff_t offset)
+static unsigned long offset_to_vaddr(struct mm_area *vma, loff_t offset)
 {
 	return vma->vm_start + offset - ((loff_t)vma->vm_pgoff << PAGE_SHIFT);
 }
 
-static loff_t vaddr_to_offset(struct vm_area_struct *vma, unsigned long vaddr)
+static loff_t vaddr_to_offset(struct mm_area *vma, unsigned long vaddr)
 {
 	return ((loff_t)vma->vm_pgoff << PAGE_SHIFT) + (vaddr - vma->vm_start);
 }
@@ -164,7 +164,7 @@ static loff_t vaddr_to_offset(struct vm_area_struct *vma, unsigned long vaddr)
  *
  * Returns 0 on success, negative error code otherwise.
  */
-static int __replace_page(struct vm_area_struct *vma, unsigned long addr,
+static int __replace_page(struct mm_area *vma, unsigned long addr,
 				struct page *old_page, struct page *new_page)
 {
 	struct folio *old_folio = page_folio(old_page);
@@ -360,7 +360,7 @@ static void delayed_uprobe_remove(struct uprobe *uprobe, struct mm_struct *mm)
 }
 
 static bool valid_ref_ctr_vma(struct uprobe *uprobe,
-			      struct vm_area_struct *vma)
+			      struct mm_area *vma)
 {
 	unsigned long vaddr = offset_to_vaddr(vma, uprobe->ref_ctr_offset);
 
@@ -372,11 +372,11 @@ static bool valid_ref_ctr_vma(struct uprobe *uprobe,
 		vma->vm_end > vaddr;
 }
 
-static struct vm_area_struct *
+static struct mm_area *
 find_ref_ctr_vma(struct uprobe *uprobe, struct mm_struct *mm)
 {
 	VMA_ITERATOR(vmi, mm, 0);
-	struct vm_area_struct *tmp;
+	struct mm_area *tmp;
 
 	for_each_vma(vmi, tmp)
 		if (valid_ref_ctr_vma(uprobe, tmp))
@@ -437,7 +437,7 @@ static void update_ref_ctr_warn(struct uprobe *uprobe,
 static int update_ref_ctr(struct uprobe *uprobe, struct mm_struct *mm,
 			  short d)
 {
-	struct vm_area_struct *rc_vma;
+	struct mm_area *rc_vma;
 	unsigned long rc_vaddr;
 	int ret = 0;
 
@@ -486,7 +486,7 @@ int uprobe_write_opcode(struct arch_uprobe *auprobe, struct mm_struct *mm,
 {
 	struct uprobe *uprobe;
 	struct page *old_page, *new_page;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int ret, is_register, ref_ctr_updated = 0;
 	bool orig_page_huge = false;
 	unsigned int gup_flags = FOLL_FORCE;
@@ -1136,7 +1136,7 @@ static bool filter_chain(struct uprobe *uprobe, struct mm_struct *mm)
 
 static int
 install_breakpoint(struct uprobe *uprobe, struct mm_struct *mm,
-			struct vm_area_struct *vma, unsigned long vaddr)
+			struct mm_area *vma, unsigned long vaddr)
 {
 	bool first_uprobe;
 	int ret;
@@ -1186,7 +1186,7 @@ static struct map_info *
 build_map_info(struct address_space *mapping, loff_t offset, bool is_register)
 {
 	unsigned long pgoff = offset >> PAGE_SHIFT;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct map_info *curr = NULL;
 	struct map_info *prev = NULL;
 	struct map_info *info;
@@ -1269,7 +1269,7 @@ register_for_each_vma(struct uprobe *uprobe, struct uprobe_consumer *new)
 
 	while (info) {
 		struct mm_struct *mm = info->mm;
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 
 		if (err && is_register)
 			goto free;
@@ -1454,7 +1454,7 @@ int uprobe_apply(struct uprobe *uprobe, struct uprobe_consumer *uc, bool add)
 static int unapply_uprobe(struct uprobe *uprobe, struct mm_struct *mm)
 {
 	VMA_ITERATOR(vmi, mm, 0);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int err = 0;
 
 	mmap_read_lock(mm);
@@ -1508,7 +1508,7 @@ find_node_in_range(struct inode *inode, loff_t min, loff_t max)
  * For a given range in vma, build a list of probes that need to be inserted.
  */
 static void build_probe_list(struct inode *inode,
-				struct vm_area_struct *vma,
+				struct mm_area *vma,
 				unsigned long start, unsigned long end,
 				struct list_head *head)
 {
@@ -1544,7 +1544,7 @@ static void build_probe_list(struct inode *inode,
 }
 
 /* @vma contains reference counter, not the probed instruction. */
-static int delayed_ref_ctr_inc(struct vm_area_struct *vma)
+static int delayed_ref_ctr_inc(struct mm_area *vma)
 {
 	struct list_head *pos, *q;
 	struct delayed_uprobe *du;
@@ -1578,7 +1578,7 @@ static int delayed_ref_ctr_inc(struct vm_area_struct *vma)
  * Currently we ignore all errors and always return 0, the callers
  * can't handle the failure anyway.
  */
-int uprobe_mmap(struct vm_area_struct *vma)
+int uprobe_mmap(struct mm_area *vma)
 {
 	struct list_head tmp_list;
 	struct uprobe *uprobe, *u;
@@ -1620,7 +1620,7 @@ int uprobe_mmap(struct vm_area_struct *vma)
 }
 
 static bool
-vma_has_uprobes(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+vma_has_uprobes(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	loff_t min, max;
 	struct inode *inode;
@@ -1641,7 +1641,7 @@ vma_has_uprobes(struct vm_area_struct *vma, unsigned long start, unsigned long e
 /*
  * Called in context of a munmap of a vma.
  */
-void uprobe_munmap(struct vm_area_struct *vma, unsigned long start, unsigned long end)
+void uprobe_munmap(struct mm_area *vma, unsigned long start, unsigned long end)
 {
 	if (no_uprobe_events() || !valid_vma(vma, false))
 		return;
@@ -1658,7 +1658,7 @@ void uprobe_munmap(struct vm_area_struct *vma, unsigned long start, unsigned lon
 }
 
 static vm_fault_t xol_fault(const struct vm_special_mapping *sm,
-			    struct vm_area_struct *vma, struct vm_fault *vmf)
+			    struct mm_area *vma, struct vm_fault *vmf)
 {
 	struct xol_area *area = vma->vm_mm->uprobes_state.xol_area;
 
@@ -1667,7 +1667,7 @@ static vm_fault_t xol_fault(const struct vm_special_mapping *sm,
 	return 0;
 }
 
-static int xol_mremap(const struct vm_special_mapping *sm, struct vm_area_struct *new_vma)
+static int xol_mremap(const struct vm_special_mapping *sm, struct mm_area *new_vma)
 {
 	return -EPERM;
 }
@@ -1681,7 +1681,7 @@ static const struct vm_special_mapping xol_mapping = {
 /* Slot allocation for XOL */
 static int xol_add_vma(struct mm_struct *mm, struct xol_area *area)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int ret;
 
 	if (mmap_write_lock_killable(mm))
@@ -2338,7 +2338,7 @@ bool uprobe_deny_signal(void)
 static void mmf_recalc_uprobes(struct mm_struct *mm)
 {
 	VMA_ITERATOR(vmi, mm, 0);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	for_each_vma(vmi, vma) {
 		if (!valid_vma(vma, false))
@@ -2387,7 +2387,7 @@ static struct uprobe *find_active_uprobe_speculative(unsigned long bp_vaddr)
 {
 	struct mm_struct *mm = current->mm;
 	struct uprobe *uprobe = NULL;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct file *vm_file;
 	loff_t offset;
 	unsigned int seq;
@@ -2429,7 +2429,7 @@ static struct uprobe *find_active_uprobe_rcu(unsigned long bp_vaddr, int *is_swb
 {
 	struct mm_struct *mm = current->mm;
 	struct uprobe *uprobe = NULL;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	uprobe = find_active_uprobe_speculative(bp_vaddr);
 	if (uprobe)
diff --git a/kernel/fork.c b/kernel/fork.c
index c4b26cd8998b..005774cb7b07 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -428,15 +428,15 @@ struct kmem_cache *files_cachep;
 /* SLAB cache for fs_struct structures (tsk->fs) */
 struct kmem_cache *fs_cachep;
 
-/* SLAB cache for vm_area_struct structures */
+/* SLAB cache for mm_area structures */
 static struct kmem_cache *vm_area_cachep;
 
 /* SLAB cache for mm_struct structures (tsk->mm) */
 static struct kmem_cache *mm_cachep;
 
-struct vm_area_struct *vm_area_alloc(struct mm_struct *mm)
+struct mm_area *vm_area_alloc(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	vma = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
 	if (!vma)
@@ -447,8 +447,8 @@ struct vm_area_struct *vm_area_alloc(struct mm_struct *mm)
 	return vma;
 }
 
-static void vm_area_init_from(const struct vm_area_struct *src,
-			      struct vm_area_struct *dest)
+static void vm_area_init_from(const struct mm_area *src,
+			      struct mm_area *dest)
 {
 	dest->vm_mm = src->vm_mm;
 	dest->vm_ops = src->vm_ops;
@@ -483,9 +483,9 @@ static void vm_area_init_from(const struct vm_area_struct *src,
 #endif
 }
 
-struct vm_area_struct *vm_area_dup(struct vm_area_struct *orig)
+struct mm_area *vm_area_dup(struct mm_area *orig)
 {
-	struct vm_area_struct *new = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
+	struct mm_area *new = kmem_cache_alloc(vm_area_cachep, GFP_KERNEL);
 
 	if (!new)
 		return NULL;
@@ -505,7 +505,7 @@ struct vm_area_struct *vm_area_dup(struct vm_area_struct *orig)
 	return new;
 }
 
-void vm_area_free(struct vm_area_struct *vma)
+void vm_area_free(struct mm_area *vma)
 {
 	/* The vma should be detached while being destroyed. */
 	vma_assert_detached(vma);
@@ -611,7 +611,7 @@ static void dup_mm_exe_file(struct mm_struct *mm, struct mm_struct *oldmm)
 static __latent_entropy int dup_mmap(struct mm_struct *mm,
 					struct mm_struct *oldmm)
 {
-	struct vm_area_struct *mpnt, *tmp;
+	struct mm_area *mpnt, *tmp;
 	int retval;
 	unsigned long charge = 0;
 	LIST_HEAD(uf);
@@ -1473,7 +1473,7 @@ int set_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file)
  */
 int replace_mm_exe_file(struct mm_struct *mm, struct file *new_exe_file)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct file *old_exe_file;
 	int ret = 0;
 
@@ -3215,7 +3215,7 @@ void __init proc_caches_init(void)
 {
 	struct kmem_cache_args args = {
 		.use_freeptr_offset = true,
-		.freeptr_offset = offsetof(struct vm_area_struct, vm_freeptr),
+		.freeptr_offset = offsetof(struct mm_area, vm_freeptr),
 	};
 
 	sighand_cachep = kmem_cache_create("sighand_cache",
@@ -3234,8 +3234,8 @@ void __init proc_caches_init(void)
 			sizeof(struct fs_struct), 0,
 			SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_ACCOUNT,
 			NULL);
-	vm_area_cachep = kmem_cache_create("vm_area_struct",
-			sizeof(struct vm_area_struct), &args,
+	vm_area_cachep = kmem_cache_create("mm_area",
+			sizeof(struct mm_area), &args,
 			SLAB_HWCACHE_ALIGN|SLAB_PANIC|SLAB_TYPESAFE_BY_RCU|
 			SLAB_ACCOUNT);
 	mmap_init();
diff --git a/kernel/kcov.c b/kernel/kcov.c
index 187ba1b80bda..afd99afc9386 100644
--- a/kernel/kcov.c
+++ b/kernel/kcov.c
@@ -484,7 +484,7 @@ void kcov_task_exit(struct task_struct *t)
 	kcov_put(kcov);
 }
 
-static int kcov_mmap(struct file *filep, struct vm_area_struct *vma)
+static int kcov_mmap(struct file *filep, struct mm_area *vma)
 {
 	int res = 0;
 	struct kcov *kcov = vma->vm_file->private_data;
diff --git a/kernel/relay.c b/kernel/relay.c
index 5ac7e711e4b6..ca1dea370f80 100644
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -74,13 +74,13 @@ static void relay_free_page_array(struct page **array)
 /**
  *	relay_mmap_buf: - mmap channel buffer to process address space
  *	@buf: relay channel buffer
- *	@vma: vm_area_struct describing memory to be mapped
+ *	@vma: mm_area describing memory to be mapped
  *
  *	Returns 0 if ok, negative on error
  *
  *	Caller should already have grabbed mmap_lock.
  */
-static int relay_mmap_buf(struct rchan_buf *buf, struct vm_area_struct *vma)
+static int relay_mmap_buf(struct rchan_buf *buf, struct mm_area *vma)
 {
 	unsigned long length = vma->vm_end - vma->vm_start;
 
@@ -825,7 +825,7 @@ static int relay_file_open(struct inode *inode, struct file *filp)
  *
  *	Calls upon relay_mmap_buf() to map the file into user space.
  */
-static int relay_file_mmap(struct file *filp, struct vm_area_struct *vma)
+static int relay_file_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct rchan_buf *buf = filp->private_data;
 	return relay_mmap_buf(buf, vma);
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index e43993a4e580..424c88801103 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -3258,7 +3258,7 @@ static void reset_ptenuma_scan(struct task_struct *p)
 	p->mm->numa_scan_offset = 0;
 }
 
-static bool vma_is_accessed(struct mm_struct *mm, struct vm_area_struct *vma)
+static bool vma_is_accessed(struct mm_struct *mm, struct mm_area *vma)
 {
 	unsigned long pids;
 	/*
@@ -3307,7 +3307,7 @@ static void task_numa_work(struct callback_head *work)
 	struct task_struct *p = current;
 	struct mm_struct *mm = p->mm;
 	u64 runtime = p->se.sum_exec_runtime;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long start, end;
 	unsigned long nr_pte_updates = 0;
 	long pages, virtpages;
diff --git a/kernel/signal.c b/kernel/signal.c
index 614d78fe3451..39a1112b49e9 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -4892,7 +4892,7 @@ SYSCALL_DEFINE3(sigsuspend, int, unused1, int, unused2, old_sigset_t, mask)
 }
 #endif
 
-__weak const char *arch_vma_name(struct vm_area_struct *vma)
+__weak const char *arch_vma_name(struct mm_area *vma)
 {
 	return NULL;
 }
diff --git a/kernel/sys.c b/kernel/sys.c
index c434968e9f5d..bfcdd00e92bf 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -2156,7 +2156,7 @@ static int prctl_set_mm(int opt, unsigned long addr,
 		.auxv_size = 0,
 		.exe_fd = -1,
 	};
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int error;
 
 	if (arg5 || (arg4 && (opt != PR_SET_MM_AUXV &&
diff --git a/kernel/time/namespace.c b/kernel/time/namespace.c
index e3642278df43..8b5a1d6c90ad 100644
--- a/kernel/time/namespace.c
+++ b/kernel/time/namespace.c
@@ -192,7 +192,7 @@ static void timens_setup_vdso_clock_data(struct vdso_clock *vc,
 	offset[CLOCK_BOOTTIME_ALARM]	= boottime;
 }
 
-struct page *find_timens_vvar_page(struct vm_area_struct *vma)
+struct page *find_timens_vvar_page(struct mm_area *vma)
 {
 	if (likely(vma->vm_mm == current->mm))
 		return current->nsproxy->time_ns->vvar_page;
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index d8d7b28e2c2f..2178bd0d5590 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -7028,7 +7028,7 @@ static int __rb_inc_dec_mapped(struct ring_buffer_per_cpu *cpu_buffer,
  */
 #ifdef CONFIG_MMU
 static int __rb_map_vma(struct ring_buffer_per_cpu *cpu_buffer,
-			struct vm_area_struct *vma)
+			struct mm_area *vma)
 {
 	unsigned long nr_subbufs, nr_pages, nr_vma_pages, pgoff = vma->vm_pgoff;
 	unsigned int subbuf_pages, subbuf_order;
@@ -7125,14 +7125,14 @@ static int __rb_map_vma(struct ring_buffer_per_cpu *cpu_buffer,
 }
 #else
 static int __rb_map_vma(struct ring_buffer_per_cpu *cpu_buffer,
-			struct vm_area_struct *vma)
+			struct mm_area *vma)
 {
 	return -EOPNOTSUPP;
 }
 #endif
 
 int ring_buffer_map(struct trace_buffer *buffer, int cpu,
-		    struct vm_area_struct *vma)
+		    struct mm_area *vma)
 {
 	struct ring_buffer_per_cpu *cpu_buffer;
 	unsigned long flags, *subbuf_ids;
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index bc957a2507e2..58694c4b18b6 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -8481,7 +8481,7 @@ static inline int get_snapshot_map(struct trace_array *tr) { return 0; }
 static inline void put_snapshot_map(struct trace_array *tr) { }
 #endif
 
-static void tracing_buffers_mmap_close(struct vm_area_struct *vma)
+static void tracing_buffers_mmap_close(struct mm_area *vma)
 {
 	struct ftrace_buffer_info *info = vma->vm_file->private_data;
 	struct trace_iterator *iter = &info->iter;
@@ -8494,7 +8494,7 @@ static const struct vm_operations_struct tracing_buffers_vmops = {
 	.close		= tracing_buffers_mmap_close,
 };
 
-static int tracing_buffers_mmap(struct file *filp, struct vm_area_struct *vma)
+static int tracing_buffers_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct ftrace_buffer_info *info = filp->private_data;
 	struct trace_iterator *iter = &info->iter;
diff --git a/kernel/trace/trace_output.c b/kernel/trace/trace_output.c
index fee40ffbd490..f8172a64070a 100644
--- a/kernel/trace/trace_output.c
+++ b/kernel/trace/trace_output.c
@@ -404,7 +404,7 @@ static int seq_print_user_ip(struct trace_seq *s, struct mm_struct *mm,
 		return 0;
 
 	if (mm) {
-		const struct vm_area_struct *vma;
+		const struct mm_area *vma;
 
 		mmap_read_lock(mm);
 		vma = find_vma(mm, ip);
diff --git a/lib/buildid.c b/lib/buildid.c
index c4b0f376fb34..5acf0f755dd2 100644
--- a/lib/buildid.c
+++ b/lib/buildid.c
@@ -287,7 +287,7 @@ static int get_build_id_64(struct freader *r, unsigned char *build_id, __u32 *si
 /* enough for Elf64_Ehdr, Elf64_Phdr, and all the smaller requests */
 #define MAX_FREADER_BUF_SZ 64
 
-static int __build_id_parse(struct vm_area_struct *vma, unsigned char *build_id,
+static int __build_id_parse(struct mm_area *vma, unsigned char *build_id,
 			    __u32 *size, bool may_fault)
 {
 	const Elf32_Ehdr *ehdr;
@@ -338,7 +338,7 @@ static int __build_id_parse(struct vm_area_struct *vma, unsigned char *build_id,
  *
  * Return: 0 on success; negative error, otherwise
  */
-int build_id_parse_nofault(struct vm_area_struct *vma, unsigned char *build_id, __u32 *size)
+int build_id_parse_nofault(struct mm_area *vma, unsigned char *build_id, __u32 *size)
 {
 	return __build_id_parse(vma, build_id, size, false /* !may_fault */);
 }
@@ -354,7 +354,7 @@ int build_id_parse_nofault(struct vm_area_struct *vma, unsigned char *build_id,
  *
  * Return: 0 on success; negative error, otherwise
  */
-int build_id_parse(struct vm_area_struct *vma, unsigned char *build_id, __u32 *size)
+int build_id_parse(struct mm_area *vma, unsigned char *build_id, __u32 *size)
 {
 	return __build_id_parse(vma, build_id, size, true /* may_fault */);
 }
diff --git a/lib/test_hmm.c b/lib/test_hmm.c
index 5b144bc5c4ec..d08270e1c826 100644
--- a/lib/test_hmm.c
+++ b/lib/test_hmm.c
@@ -878,7 +878,7 @@ static int dmirror_migrate_to_system(struct dmirror *dmirror,
 	unsigned long start, end, addr;
 	unsigned long size = cmd->npages << PAGE_SHIFT;
 	struct mm_struct *mm = dmirror->notifier.mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long src_pfns[64] = { 0 };
 	unsigned long dst_pfns[64] = { 0 };
 	struct migrate_vma args = { 0 };
@@ -938,7 +938,7 @@ static int dmirror_migrate_to_device(struct dmirror *dmirror,
 	unsigned long start, end, addr;
 	unsigned long size = cmd->npages << PAGE_SHIFT;
 	struct mm_struct *mm = dmirror->notifier.mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long src_pfns[64] = { 0 };
 	unsigned long dst_pfns[64] = { 0 };
 	struct dmirror_bounce bounce;
@@ -1342,7 +1342,7 @@ static long dmirror_fops_unlocked_ioctl(struct file *filp,
 	return 0;
 }
 
-static int dmirror_fops_mmap(struct file *file, struct vm_area_struct *vma)
+static int dmirror_fops_mmap(struct file *file, struct mm_area *vma)
 {
 	unsigned long addr;
 
diff --git a/lib/vdso/datastore.c b/lib/vdso/datastore.c
index 3693c6caf2c4..6079a11964e1 100644
--- a/lib/vdso/datastore.c
+++ b/lib/vdso/datastore.c
@@ -38,7 +38,7 @@ struct vdso_arch_data *vdso_k_arch_data = &vdso_arch_data_store.data;
 #endif /* CONFIG_ARCH_HAS_VDSO_ARCH_DATA */
 
 static vm_fault_t vvar_fault(const struct vm_special_mapping *sm,
-			     struct vm_area_struct *vma, struct vm_fault *vmf)
+			     struct mm_area *vma, struct vm_fault *vmf)
 {
 	struct page *timens_page = find_timens_vvar_page(vma);
 	unsigned long addr, pfn;
@@ -96,7 +96,7 @@ const struct vm_special_mapping vdso_vvar_mapping = {
 	.fault	= vvar_fault,
 };
 
-struct vm_area_struct *vdso_install_vvar_mapping(struct mm_struct *mm, unsigned long addr)
+struct mm_area *vdso_install_vvar_mapping(struct mm_struct *mm, unsigned long addr)
 {
 	return _install_special_mapping(mm, addr, VDSO_NR_PAGES * PAGE_SIZE,
 					VM_READ | VM_MAYREAD | VM_IO | VM_DONTDUMP |
@@ -115,7 +115,7 @@ struct vm_area_struct *vdso_install_vvar_mapping(struct mm_struct *mm, unsigned
 int vdso_join_timens(struct task_struct *task, struct time_namespace *ns)
 {
 	struct mm_struct *mm = task->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	mmap_read_lock(mm);
diff --git a/mm/damon/ops-common.c b/mm/damon/ops-common.c
index 0db1fc70c84d..db48cc64657f 100644
--- a/mm/damon/ops-common.c
+++ b/mm/damon/ops-common.c
@@ -39,7 +39,7 @@ struct folio *damon_get_folio(unsigned long pfn)
 	return folio;
 }
 
-void damon_ptep_mkold(pte_t *pte, struct vm_area_struct *vma, unsigned long addr)
+void damon_ptep_mkold(pte_t *pte, struct mm_area *vma, unsigned long addr)
 {
 	pte_t pteval = ptep_get(pte);
 	struct folio *folio;
@@ -70,7 +70,7 @@ void damon_ptep_mkold(pte_t *pte, struct vm_area_struct *vma, unsigned long addr
 	folio_put(folio);
 }
 
-void damon_pmdp_mkold(pmd_t *pmd, struct vm_area_struct *vma, unsigned long addr)
+void damon_pmdp_mkold(pmd_t *pmd, struct mm_area *vma, unsigned long addr)
 {
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 	struct folio *folio = damon_get_folio(pmd_pfn(pmdp_get(pmd)));
diff --git a/mm/damon/ops-common.h b/mm/damon/ops-common.h
index 18d837d11bce..81857e66d09b 100644
--- a/mm/damon/ops-common.h
+++ b/mm/damon/ops-common.h
@@ -9,8 +9,8 @@
 
 struct folio *damon_get_folio(unsigned long pfn);
 
-void damon_ptep_mkold(pte_t *pte, struct vm_area_struct *vma, unsigned long addr);
-void damon_pmdp_mkold(pmd_t *pmd, struct vm_area_struct *vma, unsigned long addr);
+void damon_ptep_mkold(pte_t *pte, struct mm_area *vma, unsigned long addr);
+void damon_pmdp_mkold(pmd_t *pmd, struct mm_area *vma, unsigned long addr);
 
 int damon_cold_score(struct damon_ctx *c, struct damon_region *r,
 			struct damos *s);
diff --git a/mm/damon/paddr.c b/mm/damon/paddr.c
index 1b70d3f36046..5154132467eb 100644
--- a/mm/damon/paddr.c
+++ b/mm/damon/paddr.c
@@ -20,7 +20,7 @@
 #include "ops-common.h"
 
 static bool damon_folio_mkold_one(struct folio *folio,
-		struct vm_area_struct *vma, unsigned long addr, void *arg)
+		struct mm_area *vma, unsigned long addr, void *arg)
 {
 	DEFINE_FOLIO_VMA_WALK(pvmw, folio, vma, addr, 0);
 
@@ -88,7 +88,7 @@ static void damon_pa_prepare_access_checks(struct damon_ctx *ctx)
 }
 
 static bool damon_folio_young_one(struct folio *folio,
-		struct vm_area_struct *vma, unsigned long addr, void *arg)
+		struct mm_area *vma, unsigned long addr, void *arg)
 {
 	bool *accessed = arg;
 	DEFINE_FOLIO_VMA_WALK(pvmw, folio, vma, addr, 0);
diff --git a/mm/damon/tests/vaddr-kunit.h b/mm/damon/tests/vaddr-kunit.h
index 7cd944266a92..5d07633be7fb 100644
--- a/mm/damon/tests/vaddr-kunit.h
+++ b/mm/damon/tests/vaddr-kunit.h
@@ -14,7 +14,7 @@
 
 #include <kunit/test.h>
 
-static int __link_vmas(struct maple_tree *mt, struct vm_area_struct *vmas,
+static int __link_vmas(struct maple_tree *mt, struct mm_area *vmas,
 			ssize_t nr_vmas)
 {
 	int i, ret = -ENOMEM;
@@ -68,13 +68,13 @@ static void damon_test_three_regions_in_vmas(struct kunit *test)
 	static struct mm_struct mm;
 	struct damon_addr_range regions[3] = {0};
 	/* 10-20-25, 200-210-220, 300-305, 307-330 */
-	static struct vm_area_struct vmas[] = {
-		(struct vm_area_struct) {.vm_start = 10, .vm_end = 20},
-		(struct vm_area_struct) {.vm_start = 20, .vm_end = 25},
-		(struct vm_area_struct) {.vm_start = 200, .vm_end = 210},
-		(struct vm_area_struct) {.vm_start = 210, .vm_end = 220},
-		(struct vm_area_struct) {.vm_start = 300, .vm_end = 305},
-		(struct vm_area_struct) {.vm_start = 307, .vm_end = 330},
+	static struct mm_area vmas[] = {
+		(struct mm_area) {.vm_start = 10, .vm_end = 20},
+		(struct mm_area) {.vm_start = 20, .vm_end = 25},
+		(struct mm_area) {.vm_start = 200, .vm_end = 210},
+		(struct mm_area) {.vm_start = 210, .vm_end = 220},
+		(struct mm_area) {.vm_start = 300, .vm_end = 305},
+		(struct mm_area) {.vm_start = 307, .vm_end = 330},
 	};
 
 	mt_init_flags(&mm.mm_mt, MT_FLAGS_ALLOC_RANGE | MT_FLAGS_USE_RCU);
diff --git a/mm/damon/vaddr.c b/mm/damon/vaddr.c
index e6d99106a7f9..ddd28b187cbb 100644
--- a/mm/damon/vaddr.c
+++ b/mm/damon/vaddr.c
@@ -121,7 +121,7 @@ static int __damon_va_three_regions(struct mm_struct *mm,
 {
 	struct damon_addr_range first_gap = {0}, second_gap = {0};
 	VMA_ITERATOR(vmi, mm, 0);
-	struct vm_area_struct *vma, *prev = NULL;
+	struct mm_area *vma, *prev = NULL;
 	unsigned long start;
 
 	/*
@@ -341,7 +341,7 @@ static int damon_mkold_pmd_entry(pmd_t *pmd, unsigned long addr,
 
 #ifdef CONFIG_HUGETLB_PAGE
 static void damon_hugetlb_mkold(pte_t *pte, struct mm_struct *mm,
-				struct vm_area_struct *vma, unsigned long addr)
+				struct mm_area *vma, unsigned long addr)
 {
 	bool referenced = false;
 	pte_t entry = huge_ptep_get(mm, addr, pte);
diff --git a/mm/debug.c b/mm/debug.c
index db83e381a8ae..ea36f9732a2a 100644
--- a/mm/debug.c
+++ b/mm/debug.c
@@ -184,7 +184,7 @@ EXPORT_SYMBOL(dump_page);
 
 #ifdef CONFIG_DEBUG_VM
 
-void dump_vma(const struct vm_area_struct *vma)
+void dump_vma(const struct mm_area *vma)
 {
 	pr_emerg("vma %px start %px end %px mm %px\n"
 		"prot %lx anon_vma %px vm_ops %px\n"
diff --git a/mm/debug_vm_pgtable.c b/mm/debug_vm_pgtable.c
index bc748f700a9e..ba1ca4c6a44f 100644
--- a/mm/debug_vm_pgtable.c
+++ b/mm/debug_vm_pgtable.c
@@ -45,7 +45,7 @@
 
 struct pgtable_debug_args {
 	struct mm_struct	*mm;
-	struct vm_area_struct	*vma;
+	struct mm_area	*vma;
 
 	pgd_t			*pgdp;
 	p4d_t			*p4dp;
diff --git a/mm/filemap.c b/mm/filemap.c
index b5e784f34d98..2a8150e9ac7b 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -3293,7 +3293,7 @@ static struct file *do_async_mmap_readahead(struct vm_fault *vmf,
 
 static vm_fault_t filemap_fault_recheck_pte_none(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	vm_fault_t ret = 0;
 	pte_t *ptep;
 
@@ -3689,7 +3689,7 @@ static vm_fault_t filemap_map_order0_folio(struct vm_fault *vmf,
 vm_fault_t filemap_map_pages(struct vm_fault *vmf,
 			     pgoff_t start_pgoff, pgoff_t end_pgoff)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct file *file = vma->vm_file;
 	struct address_space *mapping = file->f_mapping;
 	pgoff_t file_end, last_pgoff = start_pgoff;
@@ -3793,7 +3793,7 @@ const struct vm_operations_struct generic_file_vm_ops = {
 
 /* This is used for a general mmap of a disk file */
 
-int generic_file_mmap(struct file *file, struct vm_area_struct *vma)
+int generic_file_mmap(struct file *file, struct mm_area *vma)
 {
 	struct address_space *mapping = file->f_mapping;
 
@@ -3807,7 +3807,7 @@ int generic_file_mmap(struct file *file, struct vm_area_struct *vma)
 /*
  * This is for filesystems which do not implement ->writepage.
  */
-int generic_file_readonly_mmap(struct file *file, struct vm_area_struct *vma)
+int generic_file_readonly_mmap(struct file *file, struct mm_area *vma)
 {
 	if (vma_is_shared_maywrite(vma))
 		return -EINVAL;
@@ -3818,11 +3818,11 @@ vm_fault_t filemap_page_mkwrite(struct vm_fault *vmf)
 {
 	return VM_FAULT_SIGBUS;
 }
-int generic_file_mmap(struct file *file, struct vm_area_struct *vma)
+int generic_file_mmap(struct file *file, struct mm_area *vma)
 {
 	return -ENOSYS;
 }
-int generic_file_readonly_mmap(struct file *file, struct vm_area_struct *vma)
+int generic_file_readonly_mmap(struct file *file, struct mm_area *vma)
 {
 	return -ENOSYS;
 }
diff --git a/mm/gup.c b/mm/gup.c
index 92351e2fa876..88928bea023f 100644
--- a/mm/gup.c
+++ b/mm/gup.c
@@ -595,7 +595,7 @@ static struct folio *try_grab_folio_fast(struct page *page, int refs,
 
 /* Common code for can_follow_write_* */
 static inline bool can_follow_write_common(struct page *page,
-		struct vm_area_struct *vma, unsigned int flags)
+		struct mm_area *vma, unsigned int flags)
 {
 	/* Maybe FOLL_FORCE is set to override it? */
 	if (!(flags & FOLL_FORCE))
@@ -620,7 +620,7 @@ static inline bool can_follow_write_common(struct page *page,
 	return page && PageAnon(page) && PageAnonExclusive(page);
 }
 
-static struct page *no_page_table(struct vm_area_struct *vma,
+static struct page *no_page_table(struct mm_area *vma,
 				  unsigned int flags, unsigned long address)
 {
 	if (!(flags & FOLL_DUMP))
@@ -648,7 +648,7 @@ static struct page *no_page_table(struct vm_area_struct *vma,
 #ifdef CONFIG_PGTABLE_HAS_HUGE_LEAVES
 /* FOLL_FORCE can write to even unwritable PUDs in COW mappings. */
 static inline bool can_follow_write_pud(pud_t pud, struct page *page,
-					struct vm_area_struct *vma,
+					struct mm_area *vma,
 					unsigned int flags)
 {
 	/* If the pud is writable, we can write to the page. */
@@ -658,7 +658,7 @@ static inline bool can_follow_write_pud(pud_t pud, struct page *page,
 	return can_follow_write_common(page, vma, flags);
 }
 
-static struct page *follow_huge_pud(struct vm_area_struct *vma,
+static struct page *follow_huge_pud(struct mm_area *vma,
 				    unsigned long addr, pud_t *pudp,
 				    int flags, struct follow_page_context *ctx)
 {
@@ -716,7 +716,7 @@ static struct page *follow_huge_pud(struct vm_area_struct *vma,
 
 /* FOLL_FORCE can write to even unwritable PMDs in COW mappings. */
 static inline bool can_follow_write_pmd(pmd_t pmd, struct page *page,
-					struct vm_area_struct *vma,
+					struct mm_area *vma,
 					unsigned int flags)
 {
 	/* If the pmd is writable, we can write to the page. */
@@ -732,7 +732,7 @@ static inline bool can_follow_write_pmd(pmd_t pmd, struct page *page,
 	return !userfaultfd_huge_pmd_wp(vma, pmd);
 }
 
-static struct page *follow_huge_pmd(struct vm_area_struct *vma,
+static struct page *follow_huge_pmd(struct mm_area *vma,
 				    unsigned long addr, pmd_t *pmd,
 				    unsigned int flags,
 				    struct follow_page_context *ctx)
@@ -778,14 +778,14 @@ static struct page *follow_huge_pmd(struct vm_area_struct *vma,
 }
 
 #else  /* CONFIG_PGTABLE_HAS_HUGE_LEAVES */
-static struct page *follow_huge_pud(struct vm_area_struct *vma,
+static struct page *follow_huge_pud(struct mm_area *vma,
 				    unsigned long addr, pud_t *pudp,
 				    int flags, struct follow_page_context *ctx)
 {
 	return NULL;
 }
 
-static struct page *follow_huge_pmd(struct vm_area_struct *vma,
+static struct page *follow_huge_pmd(struct mm_area *vma,
 				    unsigned long addr, pmd_t *pmd,
 				    unsigned int flags,
 				    struct follow_page_context *ctx)
@@ -794,7 +794,7 @@ static struct page *follow_huge_pmd(struct vm_area_struct *vma,
 }
 #endif	/* CONFIG_PGTABLE_HAS_HUGE_LEAVES */
 
-static int follow_pfn_pte(struct vm_area_struct *vma, unsigned long address,
+static int follow_pfn_pte(struct mm_area *vma, unsigned long address,
 		pte_t *pte, unsigned int flags)
 {
 	if (flags & FOLL_TOUCH) {
@@ -817,7 +817,7 @@ static int follow_pfn_pte(struct vm_area_struct *vma, unsigned long address,
 
 /* FOLL_FORCE can write to even unwritable PTEs in COW mappings. */
 static inline bool can_follow_write_pte(pte_t pte, struct page *page,
-					struct vm_area_struct *vma,
+					struct mm_area *vma,
 					unsigned int flags)
 {
 	/* If the pte is writable, we can write to the page. */
@@ -833,7 +833,7 @@ static inline bool can_follow_write_pte(pte_t pte, struct page *page,
 	return !userfaultfd_pte_wp(vma, pte);
 }
 
-static struct page *follow_page_pte(struct vm_area_struct *vma,
+static struct page *follow_page_pte(struct mm_area *vma,
 		unsigned long address, pmd_t *pmd, unsigned int flags,
 		struct dev_pagemap **pgmap)
 {
@@ -947,7 +947,7 @@ static struct page *follow_page_pte(struct vm_area_struct *vma,
 	return no_page_table(vma, flags, address);
 }
 
-static struct page *follow_pmd_mask(struct vm_area_struct *vma,
+static struct page *follow_pmd_mask(struct mm_area *vma,
 				    unsigned long address, pud_t *pudp,
 				    unsigned int flags,
 				    struct follow_page_context *ctx)
@@ -999,7 +999,7 @@ static struct page *follow_pmd_mask(struct vm_area_struct *vma,
 	return page;
 }
 
-static struct page *follow_pud_mask(struct vm_area_struct *vma,
+static struct page *follow_pud_mask(struct mm_area *vma,
 				    unsigned long address, p4d_t *p4dp,
 				    unsigned int flags,
 				    struct follow_page_context *ctx)
@@ -1027,7 +1027,7 @@ static struct page *follow_pud_mask(struct vm_area_struct *vma,
 	return follow_pmd_mask(vma, address, pudp, flags, ctx);
 }
 
-static struct page *follow_p4d_mask(struct vm_area_struct *vma,
+static struct page *follow_p4d_mask(struct mm_area *vma,
 				    unsigned long address, pgd_t *pgdp,
 				    unsigned int flags,
 				    struct follow_page_context *ctx)
@@ -1046,7 +1046,7 @@ static struct page *follow_p4d_mask(struct vm_area_struct *vma,
 
 /**
  * follow_page_mask - look up a page descriptor from a user-virtual address
- * @vma: vm_area_struct mapping @address
+ * @vma: mm_area mapping @address
  * @address: virtual address to look up
  * @flags: flags modifying lookup behaviour
  * @ctx: contains dev_pagemap for %ZONE_DEVICE memory pinning and a
@@ -1068,7 +1068,7 @@ static struct page *follow_p4d_mask(struct vm_area_struct *vma,
  * an error pointer if there is a mapping to something not represented
  * by a page descriptor (see also vm_normal_page()).
  */
-static struct page *follow_page_mask(struct vm_area_struct *vma,
+static struct page *follow_page_mask(struct mm_area *vma,
 			      unsigned long address, unsigned int flags,
 			      struct follow_page_context *ctx)
 {
@@ -1092,7 +1092,7 @@ static struct page *follow_page_mask(struct vm_area_struct *vma,
 }
 
 static int get_gate_page(struct mm_struct *mm, unsigned long address,
-		unsigned int gup_flags, struct vm_area_struct **vma,
+		unsigned int gup_flags, struct mm_area **vma,
 		struct page **page)
 {
 	pgd_t *pgd;
@@ -1151,7 +1151,7 @@ static int get_gate_page(struct mm_struct *mm, unsigned long address,
  * FOLL_NOWAIT, the mmap_lock may be released.  If it is, *@locked will be set
  * to 0 and -EBUSY returned.
  */
-static int faultin_page(struct vm_area_struct *vma,
+static int faultin_page(struct mm_area *vma,
 		unsigned long address, unsigned int flags, bool unshare,
 		int *locked)
 {
@@ -1246,7 +1246,7 @@ static int faultin_page(struct vm_area_struct *vma,
  * This results in both data being written to a folio without writenotify, and
  * the folio being dirtied unexpectedly (if the caller decides to do so).
  */
-static bool writable_file_mapping_allowed(struct vm_area_struct *vma,
+static bool writable_file_mapping_allowed(struct mm_area *vma,
 					  unsigned long gup_flags)
 {
 	/*
@@ -1264,7 +1264,7 @@ static bool writable_file_mapping_allowed(struct vm_area_struct *vma,
 	return !vma_needs_dirty_tracking(vma);
 }
 
-static int check_vma_flags(struct vm_area_struct *vma, unsigned long gup_flags)
+static int check_vma_flags(struct mm_area *vma, unsigned long gup_flags)
 {
 	vm_flags_t vm_flags = vma->vm_flags;
 	int write = (gup_flags & FOLL_WRITE);
@@ -1329,14 +1329,14 @@ static int check_vma_flags(struct vm_area_struct *vma, unsigned long gup_flags)
  * This is "vma_lookup()", but with a warning if we would have
  * historically expanded the stack in the GUP code.
  */
-static struct vm_area_struct *gup_vma_lookup(struct mm_struct *mm,
+static struct mm_area *gup_vma_lookup(struct mm_struct *mm,
 	 unsigned long addr)
 {
 #ifdef CONFIG_STACK_GROWSUP
 	return vma_lookup(mm, addr);
 #else
 	static volatile unsigned long next_warn;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long now, next;
 
 	vma = find_vma(mm, addr);
@@ -1424,7 +1424,7 @@ static long __get_user_pages(struct mm_struct *mm,
 		int *locked)
 {
 	long ret = 0, i = 0;
-	struct vm_area_struct *vma = NULL;
+	struct mm_area *vma = NULL;
 	struct follow_page_context ctx = { NULL };
 
 	if (!nr_pages)
@@ -1574,7 +1574,7 @@ static long __get_user_pages(struct mm_struct *mm,
 	return i ? i : ret;
 }
 
-static bool vma_permits_fault(struct vm_area_struct *vma,
+static bool vma_permits_fault(struct mm_area *vma,
 			      unsigned int fault_flags)
 {
 	bool write   = !!(fault_flags & FAULT_FLAG_WRITE);
@@ -1630,7 +1630,7 @@ int fixup_user_fault(struct mm_struct *mm,
 		     unsigned long address, unsigned int fault_flags,
 		     bool *unlocked)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	vm_fault_t ret;
 
 	address = untagged_addr_remote(mm, address);
@@ -1879,7 +1879,7 @@ static __always_inline long __get_user_pages_locked(struct mm_struct *mm,
  * If @locked is non-NULL, it must held for read only and may be
  * released.  If it's released, *@locked will be set to 0.
  */
-long populate_vma_page_range(struct vm_area_struct *vma,
+long populate_vma_page_range(struct mm_area *vma,
 		unsigned long start, unsigned long end, int *locked)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -1995,7 +1995,7 @@ int __mm_populate(unsigned long start, unsigned long len, int ignore_errors)
 {
 	struct mm_struct *mm = current->mm;
 	unsigned long end, nstart, nend;
-	struct vm_area_struct *vma = NULL;
+	struct mm_area *vma = NULL;
 	int locked = 0;
 	long ret = 0;
 
@@ -2049,7 +2049,7 @@ static long __get_user_pages_locked(struct mm_struct *mm, unsigned long start,
 		unsigned long nr_pages, struct page **pages,
 		int *locked, unsigned int foll_flags)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	bool must_unlock = false;
 	unsigned long vm_flags;
 	long i;
diff --git a/mm/hmm.c b/mm/hmm.c
index 082f7b7c0b9e..b3fdbe6d2e2a 100644
--- a/mm/hmm.c
+++ b/mm/hmm.c
@@ -64,7 +64,7 @@ static int hmm_vma_fault(unsigned long addr, unsigned long end,
 			 unsigned int required_fault, struct mm_walk *walk)
 {
 	struct hmm_vma_walk *hmm_vma_walk = walk->private;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	unsigned int fault_flags = FAULT_FLAG_REMOTE;
 
 	WARN_ON_ONCE(!required_fault);
@@ -472,7 +472,7 @@ static int hmm_vma_walk_hugetlb_entry(pte_t *pte, unsigned long hmask,
 	unsigned long addr = start, i, pfn;
 	struct hmm_vma_walk *hmm_vma_walk = walk->private;
 	struct hmm_range *range = hmm_vma_walk->range;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	unsigned int required_fault;
 	unsigned long pfn_req_flags;
 	unsigned long cpu_flags;
@@ -522,7 +522,7 @@ static int hmm_vma_walk_test(unsigned long start, unsigned long end,
 {
 	struct hmm_vma_walk *hmm_vma_walk = walk->private;
 	struct hmm_range *range = hmm_vma_walk->range;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 
 	if (!(vma->vm_flags & (VM_IO | VM_PFNMAP)) &&
 	    vma->vm_flags & VM_READ)
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 2a47682d1ab7..30d01dbe55af 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -83,7 +83,7 @@ unsigned long huge_anon_orders_madvise __read_mostly;
 unsigned long huge_anon_orders_inherit __read_mostly;
 static bool anon_orders_configured __initdata;
 
-static inline bool file_thp_enabled(struct vm_area_struct *vma)
+static inline bool file_thp_enabled(struct mm_area *vma)
 {
 	struct inode *inode;
 
@@ -98,7 +98,7 @@ static inline bool file_thp_enabled(struct vm_area_struct *vma)
 	return !inode_is_open_for_write(inode) && S_ISREG(inode->i_mode);
 }
 
-unsigned long __thp_vma_allowable_orders(struct vm_area_struct *vma,
+unsigned long __thp_vma_allowable_orders(struct mm_area *vma,
 					 unsigned long vm_flags,
 					 unsigned long tva_flags,
 					 unsigned long orders)
@@ -1050,7 +1050,7 @@ static int __init setup_thp_anon(char *str)
 }
 __setup("thp_anon=", setup_thp_anon);
 
-pmd_t maybe_pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma)
+pmd_t maybe_pmd_mkwrite(pmd_t pmd, struct mm_area *vma)
 {
 	if (likely(vma->vm_flags & VM_WRITE))
 		pmd = pmd_mkwrite(pmd, vma);
@@ -1155,7 +1155,7 @@ unsigned long thp_get_unmapped_area(struct file *filp, unsigned long addr,
 }
 EXPORT_SYMBOL_GPL(thp_get_unmapped_area);
 
-static struct folio *vma_alloc_anon_folio_pmd(struct vm_area_struct *vma,
+static struct folio *vma_alloc_anon_folio_pmd(struct mm_area *vma,
 		unsigned long addr)
 {
 	gfp_t gfp = vma_thp_gfp_mask(vma);
@@ -1199,7 +1199,7 @@ static struct folio *vma_alloc_anon_folio_pmd(struct vm_area_struct *vma,
 }
 
 static void map_anon_folio_pmd(struct folio *folio, pmd_t *pmd,
-		struct vm_area_struct *vma, unsigned long haddr)
+		struct mm_area *vma, unsigned long haddr)
 {
 	pmd_t entry;
 
@@ -1218,7 +1218,7 @@ static void map_anon_folio_pmd(struct folio *folio, pmd_t *pmd,
 static vm_fault_t __do_huge_pmd_anonymous_page(struct vm_fault *vmf)
 {
 	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct folio *folio;
 	pgtable_t pgtable;
 	vm_fault_t ret = 0;
@@ -1277,7 +1277,7 @@ static vm_fault_t __do_huge_pmd_anonymous_page(struct vm_fault *vmf)
  *	    available
  * never: never stall for any thp allocation
  */
-gfp_t vma_thp_gfp_mask(struct vm_area_struct *vma)
+gfp_t vma_thp_gfp_mask(struct mm_area *vma)
 {
 	const bool vma_madvised = vma && (vma->vm_flags & VM_HUGEPAGE);
 
@@ -1305,7 +1305,7 @@ gfp_t vma_thp_gfp_mask(struct vm_area_struct *vma)
 
 /* Caller must hold page table lock. */
 static void set_huge_zero_folio(pgtable_t pgtable, struct mm_struct *mm,
-		struct vm_area_struct *vma, unsigned long haddr, pmd_t *pmd,
+		struct mm_area *vma, unsigned long haddr, pmd_t *pmd,
 		struct folio *zero_folio)
 {
 	pmd_t entry;
@@ -1318,7 +1318,7 @@ static void set_huge_zero_folio(pgtable_t pgtable, struct mm_struct *mm,
 
 vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
 	vm_fault_t ret;
 
@@ -1373,7 +1373,7 @@ vm_fault_t do_huge_pmd_anonymous_page(struct vm_fault *vmf)
 	return __do_huge_pmd_anonymous_page(vmf);
 }
 
-static int insert_pfn_pmd(struct vm_area_struct *vma, unsigned long addr,
+static int insert_pfn_pmd(struct mm_area *vma, unsigned long addr,
 		pmd_t *pmd, pfn_t pfn, pgprot_t prot, bool write,
 		pgtable_t pgtable)
 {
@@ -1430,7 +1430,7 @@ static int insert_pfn_pmd(struct vm_area_struct *vma, unsigned long addr,
 vm_fault_t vmf_insert_pfn_pmd(struct vm_fault *vmf, pfn_t pfn, bool write)
 {
 	unsigned long addr = vmf->address & PMD_MASK;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	pgprot_t pgprot = vma->vm_page_prot;
 	pgtable_t pgtable = NULL;
 	spinlock_t *ptl;
@@ -1471,7 +1471,7 @@ EXPORT_SYMBOL_GPL(vmf_insert_pfn_pmd);
 vm_fault_t vmf_insert_folio_pmd(struct vm_fault *vmf, struct folio *folio,
 				bool write)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	unsigned long addr = vmf->address & PMD_MASK;
 	struct mm_struct *mm = vma->vm_mm;
 	spinlock_t *ptl;
@@ -1508,14 +1508,14 @@ vm_fault_t vmf_insert_folio_pmd(struct vm_fault *vmf, struct folio *folio,
 EXPORT_SYMBOL_GPL(vmf_insert_folio_pmd);
 
 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
-static pud_t maybe_pud_mkwrite(pud_t pud, struct vm_area_struct *vma)
+static pud_t maybe_pud_mkwrite(pud_t pud, struct mm_area *vma)
 {
 	if (likely(vma->vm_flags & VM_WRITE))
 		pud = pud_mkwrite(pud);
 	return pud;
 }
 
-static void insert_pfn_pud(struct vm_area_struct *vma, unsigned long addr,
+static void insert_pfn_pud(struct mm_area *vma, unsigned long addr,
 		pud_t *pud, pfn_t pfn, bool write)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -1560,7 +1560,7 @@ static void insert_pfn_pud(struct vm_area_struct *vma, unsigned long addr,
 vm_fault_t vmf_insert_pfn_pud(struct vm_fault *vmf, pfn_t pfn, bool write)
 {
 	unsigned long addr = vmf->address & PUD_MASK;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	pgprot_t pgprot = vma->vm_page_prot;
 	spinlock_t *ptl;
 
@@ -1599,7 +1599,7 @@ EXPORT_SYMBOL_GPL(vmf_insert_pfn_pud);
 vm_fault_t vmf_insert_folio_pud(struct vm_fault *vmf, struct folio *folio,
 				bool write)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	unsigned long addr = vmf->address & PUD_MASK;
 	pud_t *pud = vmf->pud;
 	struct mm_struct *mm = vma->vm_mm;
@@ -1633,7 +1633,7 @@ vm_fault_t vmf_insert_folio_pud(struct vm_fault *vmf, struct folio *folio,
 EXPORT_SYMBOL_GPL(vmf_insert_folio_pud);
 #endif /* CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */
 
-void touch_pmd(struct vm_area_struct *vma, unsigned long addr,
+void touch_pmd(struct mm_area *vma, unsigned long addr,
 	       pmd_t *pmd, bool write)
 {
 	pmd_t _pmd;
@@ -1646,7 +1646,7 @@ void touch_pmd(struct vm_area_struct *vma, unsigned long addr,
 		update_mmu_cache_pmd(vma, addr, pmd);
 }
 
-struct page *follow_devmap_pmd(struct vm_area_struct *vma, unsigned long addr,
+struct page *follow_devmap_pmd(struct mm_area *vma, unsigned long addr,
 		pmd_t *pmd, int flags, struct dev_pagemap **pgmap)
 {
 	unsigned long pfn = pmd_pfn(*pmd);
@@ -1688,7 +1688,7 @@ struct page *follow_devmap_pmd(struct vm_area_struct *vma, unsigned long addr,
 
 int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 		  pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
-		  struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma)
+		  struct mm_area *dst_vma, struct mm_area *src_vma)
 {
 	spinlock_t *dst_ptl, *src_ptl;
 	struct page *src_page;
@@ -1810,7 +1810,7 @@ int copy_huge_pmd(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 }
 
 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
-void touch_pud(struct vm_area_struct *vma, unsigned long addr,
+void touch_pud(struct mm_area *vma, unsigned long addr,
 	       pud_t *pud, bool write)
 {
 	pud_t _pud;
@@ -1825,7 +1825,7 @@ void touch_pud(struct vm_area_struct *vma, unsigned long addr,
 
 int copy_huge_pud(struct mm_struct *dst_mm, struct mm_struct *src_mm,
 		  pud_t *dst_pud, pud_t *src_pud, unsigned long addr,
-		  struct vm_area_struct *vma)
+		  struct mm_area *vma)
 {
 	spinlock_t *dst_ptl, *src_ptl;
 	pud_t pud;
@@ -1889,7 +1889,7 @@ void huge_pmd_set_accessed(struct vm_fault *vmf)
 static vm_fault_t do_huge_zero_wp_pmd(struct vm_fault *vmf)
 {
 	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct mmu_notifier_range range;
 	struct folio *folio;
 	vm_fault_t ret = 0;
@@ -1921,7 +1921,7 @@ static vm_fault_t do_huge_zero_wp_pmd(struct vm_fault *vmf)
 vm_fault_t do_huge_pmd_wp_page(struct vm_fault *vmf)
 {
 	const bool unshare = vmf->flags & FAULT_FLAG_UNSHARE;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct folio *folio;
 	struct page *page;
 	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
@@ -2012,7 +2012,7 @@ vm_fault_t do_huge_pmd_wp_page(struct vm_fault *vmf)
 	return VM_FAULT_FALLBACK;
 }
 
-static inline bool can_change_pmd_writable(struct vm_area_struct *vma,
+static inline bool can_change_pmd_writable(struct mm_area *vma,
 					   unsigned long addr, pmd_t pmd)
 {
 	struct page *page;
@@ -2045,7 +2045,7 @@ static inline bool can_change_pmd_writable(struct vm_area_struct *vma,
 /* NUMA hinting page fault entry point for trans huge pmds */
 vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct folio *folio;
 	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
 	int nid = NUMA_NO_NODE;
@@ -2123,7 +2123,7 @@ vm_fault_t do_huge_pmd_numa_page(struct vm_fault *vmf)
  * Return true if we do MADV_FREE successfully on entire pmd page.
  * Otherwise, return false.
  */
-bool madvise_free_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
+bool madvise_free_huge_pmd(struct mmu_gather *tlb, struct mm_area *vma,
 		pmd_t *pmd, unsigned long addr, unsigned long next)
 {
 	spinlock_t *ptl;
@@ -2202,7 +2202,7 @@ static inline void zap_deposited_table(struct mm_struct *mm, pmd_t *pmd)
 	mm_dec_nr_ptes(mm);
 }
 
-int zap_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
+int zap_huge_pmd(struct mmu_gather *tlb, struct mm_area *vma,
 		 pmd_t *pmd, unsigned long addr)
 {
 	pmd_t orig_pmd;
@@ -2272,7 +2272,7 @@ int zap_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
 #ifndef pmd_move_must_withdraw
 static inline int pmd_move_must_withdraw(spinlock_t *new_pmd_ptl,
 					 spinlock_t *old_pmd_ptl,
-					 struct vm_area_struct *vma)
+					 struct mm_area *vma)
 {
 	/*
 	 * With split pmd lock we also need to move preallocated
@@ -2305,7 +2305,7 @@ static pmd_t clear_uffd_wp_pmd(pmd_t pmd)
 	return pmd;
 }
 
-bool move_huge_pmd(struct vm_area_struct *vma, unsigned long old_addr,
+bool move_huge_pmd(struct mm_area *vma, unsigned long old_addr,
 		  unsigned long new_addr, pmd_t *old_pmd, pmd_t *new_pmd)
 {
 	spinlock_t *old_ptl, *new_ptl;
@@ -2363,7 +2363,7 @@ bool move_huge_pmd(struct vm_area_struct *vma, unsigned long old_addr,
  *      or if prot_numa but THP migration is not supported
  *  - HPAGE_PMD_NR if protections changed and TLB flush necessary
  */
-int change_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
+int change_huge_pmd(struct mmu_gather *tlb, struct mm_area *vma,
 		    pmd_t *pmd, unsigned long addr, pgprot_t newprot,
 		    unsigned long cp_flags)
 {
@@ -2502,7 +2502,7 @@ int change_huge_pmd(struct mmu_gather *tlb, struct vm_area_struct *vma,
  * - HPAGE_PUD_NR: if pud was successfully processed
  */
 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
-int change_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma,
+int change_huge_pud(struct mmu_gather *tlb, struct mm_area *vma,
 		    pud_t *pudp, unsigned long addr, pgprot_t newprot,
 		    unsigned long cp_flags)
 {
@@ -2550,7 +2550,7 @@ int change_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma,
  * repeated by the caller, or other errors in case of failure.
  */
 int move_pages_huge_pmd(struct mm_struct *mm, pmd_t *dst_pmd, pmd_t *src_pmd, pmd_t dst_pmdval,
-			struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
+			struct mm_area *dst_vma, struct mm_area *src_vma,
 			unsigned long dst_addr, unsigned long src_addr)
 {
 	pmd_t _dst_pmd, src_pmdval;
@@ -2687,7 +2687,7 @@ int move_pages_huge_pmd(struct mm_struct *mm, pmd_t *dst_pmd, pmd_t *src_pmd, pm
  * Note that if it returns page table lock pointer, this routine returns without
  * unlocking page table lock. So callers must unlock it.
  */
-spinlock_t *__pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma)
+spinlock_t *__pmd_trans_huge_lock(pmd_t *pmd, struct mm_area *vma)
 {
 	spinlock_t *ptl;
 	ptl = pmd_lock(vma->vm_mm, pmd);
@@ -2704,7 +2704,7 @@ spinlock_t *__pmd_trans_huge_lock(pmd_t *pmd, struct vm_area_struct *vma)
  * Note that if it returns page table lock pointer, this routine returns without
  * unlocking page table lock. So callers must unlock it.
  */
-spinlock_t *__pud_trans_huge_lock(pud_t *pud, struct vm_area_struct *vma)
+spinlock_t *__pud_trans_huge_lock(pud_t *pud, struct mm_area *vma)
 {
 	spinlock_t *ptl;
 
@@ -2716,7 +2716,7 @@ spinlock_t *__pud_trans_huge_lock(pud_t *pud, struct vm_area_struct *vma)
 }
 
 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
-int zap_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma,
+int zap_huge_pud(struct mmu_gather *tlb, struct mm_area *vma,
 		 pud_t *pud, unsigned long addr)
 {
 	spinlock_t *ptl;
@@ -2751,7 +2751,7 @@ int zap_huge_pud(struct mmu_gather *tlb, struct vm_area_struct *vma,
 	return 1;
 }
 
-static void __split_huge_pud_locked(struct vm_area_struct *vma, pud_t *pud,
+static void __split_huge_pud_locked(struct mm_area *vma, pud_t *pud,
 		unsigned long haddr)
 {
 	struct folio *folio;
@@ -2783,7 +2783,7 @@ static void __split_huge_pud_locked(struct vm_area_struct *vma, pud_t *pud,
 		-HPAGE_PUD_NR);
 }
 
-void __split_huge_pud(struct vm_area_struct *vma, pud_t *pud,
+void __split_huge_pud(struct mm_area *vma, pud_t *pud,
 		unsigned long address)
 {
 	spinlock_t *ptl;
@@ -2803,13 +2803,13 @@ void __split_huge_pud(struct vm_area_struct *vma, pud_t *pud,
 	mmu_notifier_invalidate_range_end(&range);
 }
 #else
-void __split_huge_pud(struct vm_area_struct *vma, pud_t *pud,
+void __split_huge_pud(struct mm_area *vma, pud_t *pud,
 		unsigned long address)
 {
 }
 #endif /* CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD */
 
-static void __split_huge_zero_page_pmd(struct vm_area_struct *vma,
+static void __split_huge_zero_page_pmd(struct mm_area *vma,
 		unsigned long haddr, pmd_t *pmd)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -2850,7 +2850,7 @@ static void __split_huge_zero_page_pmd(struct vm_area_struct *vma,
 	pmd_populate(mm, pmd, pgtable);
 }
 
-static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd,
+static void __split_huge_pmd_locked(struct mm_area *vma, pmd_t *pmd,
 		unsigned long haddr, bool freeze)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -3072,7 +3072,7 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd,
 	pmd_populate(mm, pmd, pgtable);
 }
 
-void split_huge_pmd_locked(struct vm_area_struct *vma, unsigned long address,
+void split_huge_pmd_locked(struct mm_area *vma, unsigned long address,
 			   pmd_t *pmd, bool freeze, struct folio *folio)
 {
 	VM_WARN_ON_ONCE(folio && !folio_test_pmd_mappable(folio));
@@ -3093,7 +3093,7 @@ void split_huge_pmd_locked(struct vm_area_struct *vma, unsigned long address,
 	}
 }
 
-void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
+void __split_huge_pmd(struct mm_area *vma, pmd_t *pmd,
 		unsigned long address, bool freeze, struct folio *folio)
 {
 	spinlock_t *ptl;
@@ -3109,7 +3109,7 @@ void __split_huge_pmd(struct vm_area_struct *vma, pmd_t *pmd,
 	mmu_notifier_invalidate_range_end(&range);
 }
 
-void split_huge_pmd_address(struct vm_area_struct *vma, unsigned long address,
+void split_huge_pmd_address(struct mm_area *vma, unsigned long address,
 		bool freeze, struct folio *folio)
 {
 	pmd_t *pmd = mm_find_pmd(vma->vm_mm, address);
@@ -3120,7 +3120,7 @@ void split_huge_pmd_address(struct vm_area_struct *vma, unsigned long address,
 	__split_huge_pmd(vma, pmd, address, freeze, folio);
 }
 
-static inline void split_huge_pmd_if_needed(struct vm_area_struct *vma, unsigned long address)
+static inline void split_huge_pmd_if_needed(struct mm_area *vma, unsigned long address)
 {
 	/*
 	 * If the new address isn't hpage aligned and it could previously
@@ -3132,10 +3132,10 @@ static inline void split_huge_pmd_if_needed(struct vm_area_struct *vma, unsigned
 		split_huge_pmd_address(vma, address, false, NULL);
 }
 
-void vma_adjust_trans_huge(struct vm_area_struct *vma,
+void vma_adjust_trans_huge(struct mm_area *vma,
 			   unsigned long start,
 			   unsigned long end,
-			   struct vm_area_struct *next)
+			   struct mm_area *next)
 {
 	/* Check if we need to split start first. */
 	split_huge_pmd_if_needed(vma, start);
@@ -3171,7 +3171,7 @@ static void unmap_folio(struct folio *folio)
 	try_to_unmap_flush();
 }
 
-static bool __discard_anon_folio_pmd_locked(struct vm_area_struct *vma,
+static bool __discard_anon_folio_pmd_locked(struct mm_area *vma,
 					    unsigned long addr, pmd_t *pmdp,
 					    struct folio *folio)
 {
@@ -3234,7 +3234,7 @@ static bool __discard_anon_folio_pmd_locked(struct vm_area_struct *vma,
 	return true;
 }
 
-bool unmap_huge_pmd_locked(struct vm_area_struct *vma, unsigned long addr,
+bool unmap_huge_pmd_locked(struct mm_area *vma, unsigned long addr,
 			   pmd_t *pmdp, struct folio *folio)
 {
 	VM_WARN_ON_FOLIO(!folio_test_pmd_mappable(folio), folio);
@@ -4316,7 +4316,7 @@ static void split_huge_pages_all(void)
 	pr_debug("%lu of %lu THP split\n", split, total);
 }
 
-static inline bool vma_not_suitable_for_thp_split(struct vm_area_struct *vma)
+static inline bool vma_not_suitable_for_thp_split(struct mm_area *vma)
 {
 	return vma_is_special_huge(vma) || (vma->vm_flags & VM_IO) ||
 		    is_vm_hugetlb_page(vma);
@@ -4359,7 +4359,7 @@ static int split_huge_pages_pid(int pid, unsigned long vaddr_start,
 	 * table filled with PTE-mapped THPs, each of which is distinct.
 	 */
 	for (addr = vaddr_start; addr < vaddr_end; addr += PAGE_SIZE) {
-		struct vm_area_struct *vma = vma_lookup(mm, addr);
+		struct mm_area *vma = vma_lookup(mm, addr);
 		struct folio_walk fw;
 		struct folio *folio;
 		struct address_space *mapping;
@@ -4614,7 +4614,7 @@ int set_pmd_migration_entry(struct page_vma_mapped_walk *pvmw,
 		struct page *page)
 {
 	struct folio *folio = page_folio(page);
-	struct vm_area_struct *vma = pvmw->vma;
+	struct mm_area *vma = pvmw->vma;
 	struct mm_struct *mm = vma->vm_mm;
 	unsigned long address = pvmw->address;
 	bool anon_exclusive;
@@ -4663,7 +4663,7 @@ int set_pmd_migration_entry(struct page_vma_mapped_walk *pvmw,
 void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new)
 {
 	struct folio *folio = page_folio(new);
-	struct vm_area_struct *vma = pvmw->vma;
+	struct mm_area *vma = pvmw->vma;
 	struct mm_struct *mm = vma->vm_mm;
 	unsigned long address = pvmw->address;
 	unsigned long haddr = address & HPAGE_PMD_MASK;
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 39f92aad7bd1..96a0b225c1e8 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -116,12 +116,12 @@ struct mutex *hugetlb_fault_mutex_table __ro_after_init;
 
 /* Forward declaration */
 static int hugetlb_acct_memory(struct hstate *h, long delta);
-static void hugetlb_vma_lock_free(struct vm_area_struct *vma);
-static void hugetlb_vma_lock_alloc(struct vm_area_struct *vma);
-static void __hugetlb_vma_unlock_write_free(struct vm_area_struct *vma);
-static void hugetlb_unshare_pmds(struct vm_area_struct *vma,
+static void hugetlb_vma_lock_free(struct mm_area *vma);
+static void hugetlb_vma_lock_alloc(struct mm_area *vma);
+static void __hugetlb_vma_unlock_write_free(struct mm_area *vma);
+static void hugetlb_unshare_pmds(struct mm_area *vma,
 		unsigned long start, unsigned long end);
-static struct resv_map *vma_resv_map(struct vm_area_struct *vma);
+static struct resv_map *vma_resv_map(struct mm_area *vma);
 
 static void hugetlb_free_folio(struct folio *folio)
 {
@@ -288,7 +288,7 @@ static inline struct hugepage_subpool *subpool_inode(struct inode *inode)
 	return HUGETLBFS_SB(inode->i_sb)->spool;
 }
 
-static inline struct hugepage_subpool *subpool_vma(struct vm_area_struct *vma)
+static inline struct hugepage_subpool *subpool_vma(struct mm_area *vma)
 {
 	return subpool_inode(file_inode(vma->vm_file));
 }
@@ -296,7 +296,7 @@ static inline struct hugepage_subpool *subpool_vma(struct vm_area_struct *vma)
 /*
  * hugetlb vma_lock helper routines
  */
-void hugetlb_vma_lock_read(struct vm_area_struct *vma)
+void hugetlb_vma_lock_read(struct mm_area *vma)
 {
 	if (__vma_shareable_lock(vma)) {
 		struct hugetlb_vma_lock *vma_lock = vma->vm_private_data;
@@ -309,7 +309,7 @@ void hugetlb_vma_lock_read(struct vm_area_struct *vma)
 	}
 }
 
-void hugetlb_vma_unlock_read(struct vm_area_struct *vma)
+void hugetlb_vma_unlock_read(struct mm_area *vma)
 {
 	if (__vma_shareable_lock(vma)) {
 		struct hugetlb_vma_lock *vma_lock = vma->vm_private_data;
@@ -322,7 +322,7 @@ void hugetlb_vma_unlock_read(struct vm_area_struct *vma)
 	}
 }
 
-void hugetlb_vma_lock_write(struct vm_area_struct *vma)
+void hugetlb_vma_lock_write(struct mm_area *vma)
 {
 	if (__vma_shareable_lock(vma)) {
 		struct hugetlb_vma_lock *vma_lock = vma->vm_private_data;
@@ -335,7 +335,7 @@ void hugetlb_vma_lock_write(struct vm_area_struct *vma)
 	}
 }
 
-void hugetlb_vma_unlock_write(struct vm_area_struct *vma)
+void hugetlb_vma_unlock_write(struct mm_area *vma)
 {
 	if (__vma_shareable_lock(vma)) {
 		struct hugetlb_vma_lock *vma_lock = vma->vm_private_data;
@@ -348,7 +348,7 @@ void hugetlb_vma_unlock_write(struct vm_area_struct *vma)
 	}
 }
 
-int hugetlb_vma_trylock_write(struct vm_area_struct *vma)
+int hugetlb_vma_trylock_write(struct mm_area *vma)
 {
 
 	if (__vma_shareable_lock(vma)) {
@@ -364,7 +364,7 @@ int hugetlb_vma_trylock_write(struct vm_area_struct *vma)
 	return 1;
 }
 
-void hugetlb_vma_assert_locked(struct vm_area_struct *vma)
+void hugetlb_vma_assert_locked(struct mm_area *vma)
 {
 	if (__vma_shareable_lock(vma)) {
 		struct hugetlb_vma_lock *vma_lock = vma->vm_private_data;
@@ -387,7 +387,7 @@ void hugetlb_vma_lock_release(struct kref *kref)
 
 static void __hugetlb_vma_unlock_write_put(struct hugetlb_vma_lock *vma_lock)
 {
-	struct vm_area_struct *vma = vma_lock->vma;
+	struct mm_area *vma = vma_lock->vma;
 
 	/*
 	 * vma_lock structure may or not be released as a result of put,
@@ -400,7 +400,7 @@ static void __hugetlb_vma_unlock_write_put(struct hugetlb_vma_lock *vma_lock)
 	kref_put(&vma_lock->refs, hugetlb_vma_lock_release);
 }
 
-static void __hugetlb_vma_unlock_write_free(struct vm_area_struct *vma)
+static void __hugetlb_vma_unlock_write_free(struct mm_area *vma)
 {
 	if (__vma_shareable_lock(vma)) {
 		struct hugetlb_vma_lock *vma_lock = vma->vm_private_data;
@@ -414,7 +414,7 @@ static void __hugetlb_vma_unlock_write_free(struct vm_area_struct *vma)
 	}
 }
 
-static void hugetlb_vma_lock_free(struct vm_area_struct *vma)
+static void hugetlb_vma_lock_free(struct mm_area *vma)
 {
 	/*
 	 * Only present in sharable vmas.
@@ -430,7 +430,7 @@ static void hugetlb_vma_lock_free(struct vm_area_struct *vma)
 	}
 }
 
-static void hugetlb_vma_lock_alloc(struct vm_area_struct *vma)
+static void hugetlb_vma_lock_alloc(struct mm_area *vma)
 {
 	struct hugetlb_vma_lock *vma_lock;
 
@@ -1021,7 +1021,7 @@ static long region_count(struct resv_map *resv, long f, long t)
  * the mapping, huge page units here.
  */
 static pgoff_t vma_hugecache_offset(struct hstate *h,
-			struct vm_area_struct *vma, unsigned long address)
+			struct mm_area *vma, unsigned long address)
 {
 	return ((address - vma->vm_start) >> huge_page_shift(h)) +
 			(vma->vm_pgoff >> huge_page_order(h));
@@ -1036,7 +1036,7 @@ static pgoff_t vma_hugecache_offset(struct hstate *h,
  *
  * Return: The default size of the folios allocated when backing a VMA.
  */
-unsigned long vma_kernel_pagesize(struct vm_area_struct *vma)
+unsigned long vma_kernel_pagesize(struct mm_area *vma)
 {
 	if (vma->vm_ops && vma->vm_ops->pagesize)
 		return vma->vm_ops->pagesize(vma);
@@ -1050,7 +1050,7 @@ EXPORT_SYMBOL_GPL(vma_kernel_pagesize);
  * architectures where it differs, an architecture-specific 'strong'
  * version of this symbol is required.
  */
-__weak unsigned long vma_mmu_pagesize(struct vm_area_struct *vma)
+__weak unsigned long vma_mmu_pagesize(struct mm_area *vma)
 {
 	return vma_kernel_pagesize(vma);
 }
@@ -1083,12 +1083,12 @@ __weak unsigned long vma_mmu_pagesize(struct vm_area_struct *vma)
  * reference it, this region map represents those offsets which have consumed
  * reservation ie. where pages have been instantiated.
  */
-static unsigned long get_vma_private_data(struct vm_area_struct *vma)
+static unsigned long get_vma_private_data(struct mm_area *vma)
 {
 	return (unsigned long)vma->vm_private_data;
 }
 
-static void set_vma_private_data(struct vm_area_struct *vma,
+static void set_vma_private_data(struct mm_area *vma,
 							unsigned long value)
 {
 	vma->vm_private_data = (void *)value;
@@ -1178,7 +1178,7 @@ static inline struct resv_map *inode_resv_map(struct inode *inode)
 	return (struct resv_map *)(&inode->i_data)->i_private_data;
 }
 
-static struct resv_map *vma_resv_map(struct vm_area_struct *vma)
+static struct resv_map *vma_resv_map(struct mm_area *vma)
 {
 	VM_BUG_ON_VMA(!is_vm_hugetlb_page(vma), vma);
 	if (vma->vm_flags & VM_MAYSHARE) {
@@ -1193,7 +1193,7 @@ static struct resv_map *vma_resv_map(struct vm_area_struct *vma)
 	}
 }
 
-static void set_vma_resv_map(struct vm_area_struct *vma, struct resv_map *map)
+static void set_vma_resv_map(struct mm_area *vma, struct resv_map *map)
 {
 	VM_BUG_ON_VMA(!is_vm_hugetlb_page(vma), vma);
 	VM_BUG_ON_VMA(vma->vm_flags & VM_MAYSHARE, vma);
@@ -1201,7 +1201,7 @@ static void set_vma_resv_map(struct vm_area_struct *vma, struct resv_map *map)
 	set_vma_private_data(vma, (unsigned long)map);
 }
 
-static void set_vma_resv_flags(struct vm_area_struct *vma, unsigned long flags)
+static void set_vma_resv_flags(struct mm_area *vma, unsigned long flags)
 {
 	VM_BUG_ON_VMA(!is_vm_hugetlb_page(vma), vma);
 	VM_BUG_ON_VMA(vma->vm_flags & VM_MAYSHARE, vma);
@@ -1209,21 +1209,21 @@ static void set_vma_resv_flags(struct vm_area_struct *vma, unsigned long flags)
 	set_vma_private_data(vma, get_vma_private_data(vma) | flags);
 }
 
-static int is_vma_resv_set(struct vm_area_struct *vma, unsigned long flag)
+static int is_vma_resv_set(struct mm_area *vma, unsigned long flag)
 {
 	VM_BUG_ON_VMA(!is_vm_hugetlb_page(vma), vma);
 
 	return (get_vma_private_data(vma) & flag) != 0;
 }
 
-bool __vma_private_lock(struct vm_area_struct *vma)
+bool __vma_private_lock(struct mm_area *vma)
 {
 	return !(vma->vm_flags & VM_MAYSHARE) &&
 		get_vma_private_data(vma) & ~HPAGE_RESV_MASK &&
 		is_vma_resv_set(vma, HPAGE_RESV_OWNER);
 }
 
-void hugetlb_dup_vma_private(struct vm_area_struct *vma)
+void hugetlb_dup_vma_private(struct mm_area *vma)
 {
 	VM_BUG_ON_VMA(!is_vm_hugetlb_page(vma), vma);
 	/*
@@ -1254,7 +1254,7 @@ void hugetlb_dup_vma_private(struct vm_area_struct *vma)
  * same sized vma. It should never come here with last ref on the
  * reservation.
  */
-void clear_vma_resv_huge_pages(struct vm_area_struct *vma)
+void clear_vma_resv_huge_pages(struct mm_area *vma)
 {
 	/*
 	 * Clear the old hugetlb private page reservation.
@@ -1365,7 +1365,7 @@ static unsigned long available_huge_pages(struct hstate *h)
 }
 
 static struct folio *dequeue_hugetlb_folio_vma(struct hstate *h,
-				struct vm_area_struct *vma,
+				struct mm_area *vma,
 				unsigned long address, long gbl_chg)
 {
 	struct folio *folio = NULL;
@@ -2324,7 +2324,7 @@ static struct folio *alloc_migrate_hugetlb_folio(struct hstate *h, gfp_t gfp_mas
  */
 static
 struct folio *alloc_buddy_hugetlb_folio_with_mpol(struct hstate *h,
-		struct vm_area_struct *vma, unsigned long addr)
+		struct mm_area *vma, unsigned long addr)
 {
 	struct folio *folio = NULL;
 	struct mempolicy *mpol;
@@ -2606,7 +2606,7 @@ enum vma_resv_mode {
 	VMA_DEL_RESV,
 };
 static long __vma_reservation_common(struct hstate *h,
-				struct vm_area_struct *vma, unsigned long addr,
+				struct mm_area *vma, unsigned long addr,
 				enum vma_resv_mode mode)
 {
 	struct resv_map *resv;
@@ -2686,31 +2686,31 @@ static long __vma_reservation_common(struct hstate *h,
 }
 
 static long vma_needs_reservation(struct hstate *h,
-			struct vm_area_struct *vma, unsigned long addr)
+			struct mm_area *vma, unsigned long addr)
 {
 	return __vma_reservation_common(h, vma, addr, VMA_NEEDS_RESV);
 }
 
 static long vma_commit_reservation(struct hstate *h,
-			struct vm_area_struct *vma, unsigned long addr)
+			struct mm_area *vma, unsigned long addr)
 {
 	return __vma_reservation_common(h, vma, addr, VMA_COMMIT_RESV);
 }
 
 static void vma_end_reservation(struct hstate *h,
-			struct vm_area_struct *vma, unsigned long addr)
+			struct mm_area *vma, unsigned long addr)
 {
 	(void)__vma_reservation_common(h, vma, addr, VMA_END_RESV);
 }
 
 static long vma_add_reservation(struct hstate *h,
-			struct vm_area_struct *vma, unsigned long addr)
+			struct mm_area *vma, unsigned long addr)
 {
 	return __vma_reservation_common(h, vma, addr, VMA_ADD_RESV);
 }
 
 static long vma_del_reservation(struct hstate *h,
-			struct vm_area_struct *vma, unsigned long addr)
+			struct mm_area *vma, unsigned long addr)
 {
 	return __vma_reservation_common(h, vma, addr, VMA_DEL_RESV);
 }
@@ -2735,7 +2735,7 @@ static long vma_del_reservation(struct hstate *h,
  *
  * In case 2, simply undo reserve map modifications done by alloc_hugetlb_folio.
  */
-void restore_reserve_on_error(struct hstate *h, struct vm_area_struct *vma,
+void restore_reserve_on_error(struct hstate *h, struct mm_area *vma,
 			unsigned long address, struct folio *folio)
 {
 	long rc = vma_needs_reservation(h, vma, address);
@@ -3004,7 +3004,7 @@ typedef enum {
  * allocation).  New call sites should (probably) never set it to true!!
  * When it's set, the allocation will bypass all vma level reservations.
  */
-struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
+struct folio *alloc_hugetlb_folio(struct mm_area *vma,
 				    unsigned long addr, bool cow_from_owner)
 {
 	struct hugepage_subpool *spool = subpool_vma(vma);
@@ -5314,7 +5314,7 @@ static int hugetlb_acct_memory(struct hstate *h, long delta)
 	return ret;
 }
 
-static void hugetlb_vm_op_open(struct vm_area_struct *vma)
+static void hugetlb_vm_op_open(struct mm_area *vma)
 {
 	struct resv_map *resv = vma_resv_map(vma);
 
@@ -5352,7 +5352,7 @@ static void hugetlb_vm_op_open(struct vm_area_struct *vma)
 	}
 }
 
-static void hugetlb_vm_op_close(struct vm_area_struct *vma)
+static void hugetlb_vm_op_close(struct mm_area *vma)
 {
 	struct hstate *h = hstate_vma(vma);
 	struct resv_map *resv;
@@ -5383,7 +5383,7 @@ static void hugetlb_vm_op_close(struct vm_area_struct *vma)
 	kref_put(&resv->refs, resv_map_release);
 }
 
-static int hugetlb_vm_op_split(struct vm_area_struct *vma, unsigned long addr)
+static int hugetlb_vm_op_split(struct mm_area *vma, unsigned long addr)
 {
 	if (addr & ~(huge_page_mask(hstate_vma(vma))))
 		return -EINVAL;
@@ -5409,7 +5409,7 @@ static int hugetlb_vm_op_split(struct vm_area_struct *vma, unsigned long addr)
 	return 0;
 }
 
-static unsigned long hugetlb_vm_op_pagesize(struct vm_area_struct *vma)
+static unsigned long hugetlb_vm_op_pagesize(struct mm_area *vma)
 {
 	return huge_page_size(hstate_vma(vma));
 }
@@ -5441,7 +5441,7 @@ const struct vm_operations_struct hugetlb_vm_ops = {
 	.pagesize = hugetlb_vm_op_pagesize,
 };
 
-static pte_t make_huge_pte(struct vm_area_struct *vma, struct page *page,
+static pte_t make_huge_pte(struct mm_area *vma, struct page *page,
 		bool try_mkwrite)
 {
 	pte_t entry;
@@ -5460,7 +5460,7 @@ static pte_t make_huge_pte(struct vm_area_struct *vma, struct page *page,
 	return entry;
 }
 
-static void set_huge_ptep_writable(struct vm_area_struct *vma,
+static void set_huge_ptep_writable(struct mm_area *vma,
 				   unsigned long address, pte_t *ptep)
 {
 	pte_t entry;
@@ -5470,7 +5470,7 @@ static void set_huge_ptep_writable(struct vm_area_struct *vma,
 		update_mmu_cache(vma, address, ptep);
 }
 
-static void set_huge_ptep_maybe_writable(struct vm_area_struct *vma,
+static void set_huge_ptep_maybe_writable(struct mm_area *vma,
 					 unsigned long address, pte_t *ptep)
 {
 	if (vma->vm_flags & VM_WRITE)
@@ -5504,7 +5504,7 @@ bool is_hugetlb_entry_hwpoisoned(pte_t pte)
 }
 
 static void
-hugetlb_install_folio(struct vm_area_struct *vma, pte_t *ptep, unsigned long addr,
+hugetlb_install_folio(struct mm_area *vma, pte_t *ptep, unsigned long addr,
 		      struct folio *new_folio, pte_t old, unsigned long sz)
 {
 	pte_t newpte = make_huge_pte(vma, &new_folio->page, true);
@@ -5519,8 +5519,8 @@ hugetlb_install_folio(struct vm_area_struct *vma, pte_t *ptep, unsigned long add
 }
 
 int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
-			    struct vm_area_struct *dst_vma,
-			    struct vm_area_struct *src_vma)
+			    struct mm_area *dst_vma,
+			    struct mm_area *src_vma)
 {
 	pte_t *src_pte, *dst_pte, entry;
 	struct folio *pte_folio;
@@ -5706,7 +5706,7 @@ int copy_hugetlb_page_range(struct mm_struct *dst, struct mm_struct *src,
 	return ret;
 }
 
-static void move_huge_pte(struct vm_area_struct *vma, unsigned long old_addr,
+static void move_huge_pte(struct mm_area *vma, unsigned long old_addr,
 			  unsigned long new_addr, pte_t *src_pte, pte_t *dst_pte,
 			  unsigned long sz)
 {
@@ -5745,8 +5745,8 @@ static void move_huge_pte(struct vm_area_struct *vma, unsigned long old_addr,
 	spin_unlock(dst_ptl);
 }
 
-int move_hugetlb_page_tables(struct vm_area_struct *vma,
-			     struct vm_area_struct *new_vma,
+int move_hugetlb_page_tables(struct mm_area *vma,
+			     struct mm_area *new_vma,
 			     unsigned long old_addr, unsigned long new_addr,
 			     unsigned long len)
 {
@@ -5809,7 +5809,7 @@ int move_hugetlb_page_tables(struct vm_area_struct *vma,
 	return len + old_addr - old_end;
 }
 
-void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma,
+void __unmap_hugepage_range(struct mmu_gather *tlb, struct mm_area *vma,
 			    unsigned long start, unsigned long end,
 			    struct page *ref_page, zap_flags_t zap_flags)
 {
@@ -5977,7 +5977,7 @@ void __unmap_hugepage_range(struct mmu_gather *tlb, struct vm_area_struct *vma,
 		tlb_flush_mmu_tlbonly(tlb);
 }
 
-void __hugetlb_zap_begin(struct vm_area_struct *vma,
+void __hugetlb_zap_begin(struct mm_area *vma,
 			 unsigned long *start, unsigned long *end)
 {
 	if (!vma->vm_file)	/* hugetlbfs_file_mmap error */
@@ -5989,7 +5989,7 @@ void __hugetlb_zap_begin(struct vm_area_struct *vma,
 		i_mmap_lock_write(vma->vm_file->f_mapping);
 }
 
-void __hugetlb_zap_end(struct vm_area_struct *vma,
+void __hugetlb_zap_end(struct mm_area *vma,
 		       struct zap_details *details)
 {
 	zap_flags_t zap_flags = details ? details->zap_flags : 0;
@@ -6016,7 +6016,7 @@ void __hugetlb_zap_end(struct vm_area_struct *vma,
 		i_mmap_unlock_write(vma->vm_file->f_mapping);
 }
 
-void unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start,
+void unmap_hugepage_range(struct mm_area *vma, unsigned long start,
 			  unsigned long end, struct page *ref_page,
 			  zap_flags_t zap_flags)
 {
@@ -6041,11 +6041,11 @@ void unmap_hugepage_range(struct vm_area_struct *vma, unsigned long start,
  * from other VMAs and let the children be SIGKILLed if they are faulting the
  * same region.
  */
-static void unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
+static void unmap_ref_private(struct mm_struct *mm, struct mm_area *vma,
 			      struct page *page, unsigned long address)
 {
 	struct hstate *h = hstate_vma(vma);
-	struct vm_area_struct *iter_vma;
+	struct mm_area *iter_vma;
 	struct address_space *mapping;
 	pgoff_t pgoff;
 
@@ -6100,7 +6100,7 @@ static void unmap_ref_private(struct mm_struct *mm, struct vm_area_struct *vma,
 static vm_fault_t hugetlb_wp(struct folio *pagecache_folio,
 		       struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct mm_struct *mm = vma->vm_mm;
 	const bool unshare = vmf->flags & FAULT_FLAG_UNSHARE;
 	pte_t pte = huge_ptep_get(mm, vmf->address, vmf->pte);
@@ -6294,7 +6294,7 @@ static vm_fault_t hugetlb_wp(struct folio *pagecache_folio,
  * Return whether there is a pagecache page to back given address within VMA.
  */
 bool hugetlbfs_pagecache_present(struct hstate *h,
-				 struct vm_area_struct *vma, unsigned long address)
+				 struct mm_area *vma, unsigned long address)
 {
 	struct address_space *mapping = vma->vm_file->f_mapping;
 	pgoff_t idx = linear_page_index(vma, address);
@@ -6373,7 +6373,7 @@ static bool hugetlb_pte_stable(struct hstate *h, struct mm_struct *mm, unsigned
 static vm_fault_t hugetlb_no_page(struct address_space *mapping,
 			struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct mm_struct *mm = vma->vm_mm;
 	struct hstate *h = hstate_vma(vma);
 	vm_fault_t ret = VM_FAULT_SIGBUS;
@@ -6611,7 +6611,7 @@ u32 hugetlb_fault_mutex_hash(struct address_space *mapping, pgoff_t idx)
 }
 #endif
 
-vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
+vm_fault_t hugetlb_fault(struct mm_struct *mm, struct mm_area *vma,
 			unsigned long address, unsigned int flags)
 {
 	vm_fault_t ret;
@@ -6824,7 +6824,7 @@ vm_fault_t hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma,
  * Can probably be eliminated, but still used by hugetlb_mfill_atomic_pte().
  */
 static struct folio *alloc_hugetlb_folio_vma(struct hstate *h,
-		struct vm_area_struct *vma, unsigned long address)
+		struct mm_area *vma, unsigned long address)
 {
 	struct mempolicy *mpol;
 	nodemask_t *nodemask;
@@ -6851,7 +6851,7 @@ static struct folio *alloc_hugetlb_folio_vma(struct hstate *h,
  * with modifications for hugetlb pages.
  */
 int hugetlb_mfill_atomic_pte(pte_t *dst_pte,
-			     struct vm_area_struct *dst_vma,
+			     struct mm_area *dst_vma,
 			     unsigned long dst_addr,
 			     unsigned long src_addr,
 			     uffd_flags_t flags,
@@ -7063,7 +7063,7 @@ int hugetlb_mfill_atomic_pte(pte_t *dst_pte,
 }
 #endif /* CONFIG_USERFAULTFD */
 
-long hugetlb_change_protection(struct vm_area_struct *vma,
+long hugetlb_change_protection(struct mm_area *vma,
 		unsigned long address, unsigned long end,
 		pgprot_t newprot, unsigned long cp_flags)
 {
@@ -7213,7 +7213,7 @@ long hugetlb_change_protection(struct vm_area_struct *vma,
 /* Return true if reservation was successful, false otherwise.  */
 bool hugetlb_reserve_pages(struct inode *inode,
 					long from, long to,
-					struct vm_area_struct *vma,
+					struct mm_area *vma,
 					vm_flags_t vm_flags)
 {
 	long chg = -1, add = -1;
@@ -7413,8 +7413,8 @@ long hugetlb_unreserve_pages(struct inode *inode, long start, long end,
 }
 
 #ifdef CONFIG_HUGETLB_PMD_PAGE_TABLE_SHARING
-static unsigned long page_table_shareable(struct vm_area_struct *svma,
-				struct vm_area_struct *vma,
+static unsigned long page_table_shareable(struct mm_area *svma,
+				struct mm_area *vma,
 				unsigned long addr, pgoff_t idx)
 {
 	unsigned long saddr = ((idx - svma->vm_pgoff) << PAGE_SHIFT) +
@@ -7441,7 +7441,7 @@ static unsigned long page_table_shareable(struct vm_area_struct *svma,
 	return saddr;
 }
 
-bool want_pmd_share(struct vm_area_struct *vma, unsigned long addr)
+bool want_pmd_share(struct mm_area *vma, unsigned long addr)
 {
 	unsigned long start = addr & PUD_MASK;
 	unsigned long end = start + PUD_SIZE;
@@ -7467,7 +7467,7 @@ bool want_pmd_share(struct vm_area_struct *vma, unsigned long addr)
  * If yes, adjust start and end to cover range associated with possible
  * shared pmd mappings.
  */
-void adjust_range_if_pmd_sharing_possible(struct vm_area_struct *vma,
+void adjust_range_if_pmd_sharing_possible(struct mm_area *vma,
 				unsigned long *start, unsigned long *end)
 {
 	unsigned long v_start = ALIGN(vma->vm_start, PUD_SIZE),
@@ -7498,13 +7498,13 @@ void adjust_range_if_pmd_sharing_possible(struct vm_area_struct *vma,
  * racing tasks could either miss the sharing (see huge_pte_offset) or select a
  * bad pmd for sharing.
  */
-pte_t *huge_pmd_share(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pmd_share(struct mm_struct *mm, struct mm_area *vma,
 		      unsigned long addr, pud_t *pud)
 {
 	struct address_space *mapping = vma->vm_file->f_mapping;
 	pgoff_t idx = ((addr - vma->vm_start) >> PAGE_SHIFT) +
 			vma->vm_pgoff;
-	struct vm_area_struct *svma;
+	struct mm_area *svma;
 	unsigned long saddr;
 	pte_t *spte = NULL;
 	pte_t *pte;
@@ -7551,7 +7551,7 @@ pte_t *huge_pmd_share(struct mm_struct *mm, struct vm_area_struct *vma,
  * returns: 1 successfully unmapped a shared pte page
  *	    0 the underlying pte page is not shared, or it is the last user
  */
-int huge_pmd_unshare(struct mm_struct *mm, struct vm_area_struct *vma,
+int huge_pmd_unshare(struct mm_struct *mm, struct mm_area *vma,
 					unsigned long addr, pte_t *ptep)
 {
 	unsigned long sz = huge_page_size(hstate_vma(vma));
@@ -7574,31 +7574,31 @@ int huge_pmd_unshare(struct mm_struct *mm, struct vm_area_struct *vma,
 
 #else /* !CONFIG_HUGETLB_PMD_PAGE_TABLE_SHARING */
 
-pte_t *huge_pmd_share(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pmd_share(struct mm_struct *mm, struct mm_area *vma,
 		      unsigned long addr, pud_t *pud)
 {
 	return NULL;
 }
 
-int huge_pmd_unshare(struct mm_struct *mm, struct vm_area_struct *vma,
+int huge_pmd_unshare(struct mm_struct *mm, struct mm_area *vma,
 				unsigned long addr, pte_t *ptep)
 {
 	return 0;
 }
 
-void adjust_range_if_pmd_sharing_possible(struct vm_area_struct *vma,
+void adjust_range_if_pmd_sharing_possible(struct mm_area *vma,
 				unsigned long *start, unsigned long *end)
 {
 }
 
-bool want_pmd_share(struct vm_area_struct *vma, unsigned long addr)
+bool want_pmd_share(struct mm_area *vma, unsigned long addr)
 {
 	return false;
 }
 #endif /* CONFIG_HUGETLB_PMD_PAGE_TABLE_SHARING */
 
 #ifdef CONFIG_ARCH_WANT_GENERAL_HUGETLB
-pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma,
+pte_t *huge_pte_alloc(struct mm_struct *mm, struct mm_area *vma,
 			unsigned long addr, unsigned long sz)
 {
 	pgd_t *pgd;
@@ -7837,7 +7837,7 @@ void move_hugetlb_state(struct folio *old_folio, struct folio *new_folio, int re
 	spin_unlock_irq(&hugetlb_lock);
 }
 
-static void hugetlb_unshare_pmds(struct vm_area_struct *vma,
+static void hugetlb_unshare_pmds(struct mm_area *vma,
 				   unsigned long start,
 				   unsigned long end)
 {
@@ -7887,7 +7887,7 @@ static void hugetlb_unshare_pmds(struct vm_area_struct *vma,
  * This function will unconditionally remove all the shared pmd pgtable entries
  * within the specific vma for a hugetlbfs memory range.
  */
-void hugetlb_unshare_all_pmds(struct vm_area_struct *vma)
+void hugetlb_unshare_all_pmds(struct mm_area *vma)
 {
 	hugetlb_unshare_pmds(vma, ALIGN(vma->vm_start, PUD_SIZE),
 			ALIGN_DOWN(vma->vm_end, PUD_SIZE));
diff --git a/mm/internal.h b/mm/internal.h
index 50c2f590b2d0..b2d2c52dfbd9 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -44,8 +44,8 @@ struct folio_batch;
  * represents the length of the range being copied as specified by the user.
  */
 struct pagetable_move_control {
-	struct vm_area_struct *old; /* Source VMA. */
-	struct vm_area_struct *new; /* Destination VMA. */
+	struct mm_area *old; /* Source VMA. */
+	struct mm_area *new; /* Destination VMA. */
 	unsigned long old_addr; /* Address from which the move begins. */
 	unsigned long old_end; /* Exclusive address at which old range ends. */
 	unsigned long new_addr; /* Address to move page tables to. */
@@ -162,7 +162,7 @@ static inline void *folio_raw_mapping(const struct folio *folio)
  *
  * Returns: 0 if success, error otherwise.
  */
-static inline int mmap_file(struct file *file, struct vm_area_struct *vma)
+static inline int mmap_file(struct file *file, struct mm_area *vma)
 {
 	int err = call_mmap(file, vma);
 
@@ -184,7 +184,7 @@ static inline int mmap_file(struct file *file, struct vm_area_struct *vma)
  * it in an inconsistent state which makes the use of any hooks suspect, clear
  * them down by installing dummy empty hooks.
  */
-static inline void vma_close(struct vm_area_struct *vma)
+static inline void vma_close(struct mm_area *vma)
 {
 	if (vma->vm_ops && vma->vm_ops->close) {
 		vma->vm_ops->close(vma);
@@ -426,13 +426,13 @@ void deactivate_file_folio(struct folio *folio);
 void folio_activate(struct folio *folio);
 
 void free_pgtables(struct mmu_gather *tlb, struct ma_state *mas,
-		   struct vm_area_struct *start_vma, unsigned long floor,
+		   struct mm_area *start_vma, unsigned long floor,
 		   unsigned long ceiling, bool mm_wr_locked);
 void pmd_install(struct mm_struct *mm, pmd_t *pmd, pgtable_t *pte);
 
 struct zap_details;
 void unmap_page_range(struct mmu_gather *tlb,
-			     struct vm_area_struct *vma,
+			     struct mm_area *vma,
 			     unsigned long addr, unsigned long end,
 			     struct zap_details *details);
 int folio_unmap_invalidate(struct address_space *mapping, struct folio *folio,
@@ -927,7 +927,7 @@ struct anon_vma *folio_anon_vma(const struct folio *folio);
 
 #ifdef CONFIG_MMU
 void unmap_mapping_folio(struct folio *folio);
-extern long populate_vma_page_range(struct vm_area_struct *vma,
+extern long populate_vma_page_range(struct mm_area *vma,
 		unsigned long start, unsigned long end, int *locked);
 extern long faultin_page_range(struct mm_struct *mm, unsigned long start,
 		unsigned long end, bool write, int *locked);
@@ -950,7 +950,7 @@ extern bool mlock_future_ok(struct mm_struct *mm, unsigned long flags,
  * the page table to know whether the folio is fully mapped to the range.
  */
 static inline bool
-folio_within_range(struct folio *folio, struct vm_area_struct *vma,
+folio_within_range(struct folio *folio, struct mm_area *vma,
 		unsigned long start, unsigned long end)
 {
 	pgoff_t pgoff, addr;
@@ -978,7 +978,7 @@ folio_within_range(struct folio *folio, struct vm_area_struct *vma,
 }
 
 static inline bool
-folio_within_vma(struct folio *folio, struct vm_area_struct *vma)
+folio_within_vma(struct folio *folio, struct mm_area *vma)
 {
 	return folio_within_range(folio, vma, vma->vm_start, vma->vm_end);
 }
@@ -994,7 +994,7 @@ folio_within_vma(struct folio *folio, struct vm_area_struct *vma)
  */
 void mlock_folio(struct folio *folio);
 static inline void mlock_vma_folio(struct folio *folio,
-				struct vm_area_struct *vma)
+				struct mm_area *vma)
 {
 	/*
 	 * The VM_SPECIAL check here serves two purposes.
@@ -1010,7 +1010,7 @@ static inline void mlock_vma_folio(struct folio *folio,
 
 void munlock_folio(struct folio *folio);
 static inline void munlock_vma_folio(struct folio *folio,
-					struct vm_area_struct *vma)
+					struct mm_area *vma)
 {
 	/*
 	 * munlock if the function is called. Ideally, we should only
@@ -1030,7 +1030,7 @@ bool need_mlock_drain(int cpu);
 void mlock_drain_local(void);
 void mlock_drain_remote(int cpu);
 
-extern pmd_t maybe_pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma);
+extern pmd_t maybe_pmd_mkwrite(pmd_t pmd, struct mm_area *vma);
 
 /**
  * vma_address - Find the virtual address a page range is mapped at
@@ -1041,7 +1041,7 @@ extern pmd_t maybe_pmd_mkwrite(pmd_t pmd, struct vm_area_struct *vma);
  * If any page in this range is mapped by this VMA, return the first address
  * where any of these pages appear.  Otherwise, return -EFAULT.
  */
-static inline unsigned long vma_address(const struct vm_area_struct *vma,
+static inline unsigned long vma_address(const struct mm_area *vma,
 		pgoff_t pgoff, unsigned long nr_pages)
 {
 	unsigned long address;
@@ -1067,7 +1067,7 @@ static inline unsigned long vma_address(const struct vm_area_struct *vma,
  */
 static inline unsigned long vma_address_end(struct page_vma_mapped_walk *pvmw)
 {
-	struct vm_area_struct *vma = pvmw->vma;
+	struct mm_area *vma = pvmw->vma;
 	pgoff_t pgoff;
 	unsigned long address;
 
@@ -1210,10 +1210,10 @@ bool take_page_off_buddy(struct page *page);
 bool put_page_back_buddy(struct page *page);
 struct task_struct *task_early_kill(struct task_struct *tsk, int force_early);
 void add_to_kill_ksm(struct task_struct *tsk, const struct page *p,
-		     struct vm_area_struct *vma, struct list_head *to_kill,
+		     struct mm_area *vma, struct list_head *to_kill,
 		     unsigned long ksm_addr);
 unsigned long page_mapped_in_vma(const struct page *page,
-		struct vm_area_struct *vma);
+		struct mm_area *vma);
 
 #else
 static inline int unmap_poisoned_folio(struct folio *folio, unsigned long pfn, bool must_kill)
@@ -1373,9 +1373,9 @@ int __must_check try_grab_folio(struct folio *folio, int refs,
 /*
  * mm/huge_memory.c
  */
-void touch_pud(struct vm_area_struct *vma, unsigned long addr,
+void touch_pud(struct mm_area *vma, unsigned long addr,
 	       pud_t *pud, bool write);
-void touch_pmd(struct vm_area_struct *vma, unsigned long addr,
+void touch_pmd(struct mm_area *vma, unsigned long addr,
 	       pmd_t *pmd, bool write);
 
 /*
@@ -1441,7 +1441,7 @@ enum {
  * If the vma is NULL, we're coming from the GUP-fast path and might have
  * to fallback to the slow path just to lookup the vma.
  */
-static inline bool gup_must_unshare(struct vm_area_struct *vma,
+static inline bool gup_must_unshare(struct mm_area *vma,
 				    unsigned int flags, struct page *page)
 {
 	/*
@@ -1490,7 +1490,7 @@ extern bool mirrored_kernelcore;
 bool memblock_has_mirror(void);
 void memblock_free_all(void);
 
-static __always_inline void vma_set_range(struct vm_area_struct *vma,
+static __always_inline void vma_set_range(struct mm_area *vma,
 					  unsigned long start, unsigned long end,
 					  pgoff_t pgoff)
 {
@@ -1499,7 +1499,7 @@ static __always_inline void vma_set_range(struct vm_area_struct *vma,
 	vma->vm_pgoff = pgoff;
 }
 
-static inline bool vma_soft_dirty_enabled(struct vm_area_struct *vma)
+static inline bool vma_soft_dirty_enabled(struct mm_area *vma)
 {
 	/*
 	 * NOTE: we must check this before VM_SOFTDIRTY on soft-dirty
@@ -1517,12 +1517,12 @@ static inline bool vma_soft_dirty_enabled(struct vm_area_struct *vma)
 	return !(vma->vm_flags & VM_SOFTDIRTY);
 }
 
-static inline bool pmd_needs_soft_dirty_wp(struct vm_area_struct *vma, pmd_t pmd)
+static inline bool pmd_needs_soft_dirty_wp(struct mm_area *vma, pmd_t pmd)
 {
 	return vma_soft_dirty_enabled(vma) && !pmd_soft_dirty(pmd);
 }
 
-static inline bool pte_needs_soft_dirty_wp(struct vm_area_struct *vma, pte_t pte)
+static inline bool pte_needs_soft_dirty_wp(struct mm_area *vma, pte_t pte)
 {
 	return vma_soft_dirty_enabled(vma) && !pte_soft_dirty(pte);
 }
diff --git a/mm/interval_tree.c b/mm/interval_tree.c
index 32e390c42c53..864e9d3c733a 100644
--- a/mm/interval_tree.c
+++ b/mm/interval_tree.c
@@ -10,27 +10,27 @@
 #include <linux/rmap.h>
 #include <linux/interval_tree_generic.h>
 
-static inline unsigned long vma_start_pgoff(struct vm_area_struct *v)
+static inline unsigned long vma_start_pgoff(struct mm_area *v)
 {
 	return v->vm_pgoff;
 }
 
-static inline unsigned long vma_last_pgoff(struct vm_area_struct *v)
+static inline unsigned long vma_last_pgoff(struct mm_area *v)
 {
 	return v->vm_pgoff + vma_pages(v) - 1;
 }
 
-INTERVAL_TREE_DEFINE(struct vm_area_struct, shared.rb,
+INTERVAL_TREE_DEFINE(struct mm_area, shared.rb,
 		     unsigned long, shared.rb_subtree_last,
 		     vma_start_pgoff, vma_last_pgoff, /* empty */, vma_interval_tree)
 
 /* Insert node immediately after prev in the interval tree */
-void vma_interval_tree_insert_after(struct vm_area_struct *node,
-				    struct vm_area_struct *prev,
+void vma_interval_tree_insert_after(struct mm_area *node,
+				    struct mm_area *prev,
 				    struct rb_root_cached *root)
 {
 	struct rb_node **link;
-	struct vm_area_struct *parent;
+	struct mm_area *parent;
 	unsigned long last = vma_last_pgoff(node);
 
 	VM_BUG_ON_VMA(vma_start_pgoff(node) != vma_start_pgoff(prev), node);
@@ -40,12 +40,12 @@ void vma_interval_tree_insert_after(struct vm_area_struct *node,
 		link = &prev->shared.rb.rb_right;
 	} else {
 		parent = rb_entry(prev->shared.rb.rb_right,
-				  struct vm_area_struct, shared.rb);
+				  struct mm_area, shared.rb);
 		if (parent->shared.rb_subtree_last < last)
 			parent->shared.rb_subtree_last = last;
 		while (parent->shared.rb.rb_left) {
 			parent = rb_entry(parent->shared.rb.rb_left,
-				struct vm_area_struct, shared.rb);
+				struct mm_area, shared.rb);
 			if (parent->shared.rb_subtree_last < last)
 				parent->shared.rb_subtree_last = last;
 		}
diff --git a/mm/io-mapping.c b/mm/io-mapping.c
index 01b362799930..588ecb8ea446 100644
--- a/mm/io-mapping.c
+++ b/mm/io-mapping.c
@@ -13,7 +13,7 @@
  *
  *  Note: this is only safe if the mm semaphore is held when called.
  */
-int io_mapping_map_user(struct io_mapping *iomap, struct vm_area_struct *vma,
+int io_mapping_map_user(struct io_mapping *iomap, struct mm_area *vma,
 		unsigned long addr, unsigned long pfn, unsigned long size)
 {
 	vm_flags_t expected_flags = VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index cc945c6ab3bd..e135208612f1 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -346,7 +346,7 @@ struct attribute_group khugepaged_attr_group = {
 };
 #endif /* CONFIG_SYSFS */
 
-int hugepage_madvise(struct vm_area_struct *vma,
+int hugepage_madvise(struct mm_area *vma,
 		     unsigned long *vm_flags, int advice)
 {
 	switch (advice) {
@@ -469,7 +469,7 @@ void __khugepaged_enter(struct mm_struct *mm)
 		wake_up_interruptible(&khugepaged_wait);
 }
 
-void khugepaged_enter_vma(struct vm_area_struct *vma,
+void khugepaged_enter_vma(struct mm_area *vma,
 			  unsigned long vm_flags)
 {
 	if (!test_bit(MMF_VM_HUGEPAGE, &vma->vm_mm->flags) &&
@@ -561,7 +561,7 @@ static bool is_refcount_suitable(struct folio *folio)
 	return folio_ref_count(folio) == expected_refcount;
 }
 
-static int __collapse_huge_page_isolate(struct vm_area_struct *vma,
+static int __collapse_huge_page_isolate(struct mm_area *vma,
 					unsigned long address,
 					pte_t *pte,
 					struct collapse_control *cc,
@@ -708,7 +708,7 @@ static int __collapse_huge_page_isolate(struct vm_area_struct *vma,
 }
 
 static void __collapse_huge_page_copy_succeeded(pte_t *pte,
-						struct vm_area_struct *vma,
+						struct mm_area *vma,
 						unsigned long address,
 						spinlock_t *ptl,
 						struct list_head *compound_pagelist)
@@ -763,7 +763,7 @@ static void __collapse_huge_page_copy_succeeded(pte_t *pte,
 static void __collapse_huge_page_copy_failed(pte_t *pte,
 					     pmd_t *pmd,
 					     pmd_t orig_pmd,
-					     struct vm_area_struct *vma,
+					     struct mm_area *vma,
 					     struct list_head *compound_pagelist)
 {
 	spinlock_t *pmd_ptl;
@@ -800,7 +800,7 @@ static void __collapse_huge_page_copy_failed(pte_t *pte,
  * @compound_pagelist: list that stores compound pages
  */
 static int __collapse_huge_page_copy(pte_t *pte, struct folio *folio,
-		pmd_t *pmd, pmd_t orig_pmd, struct vm_area_struct *vma,
+		pmd_t *pmd, pmd_t orig_pmd, struct mm_area *vma,
 		unsigned long address, spinlock_t *ptl,
 		struct list_head *compound_pagelist)
 {
@@ -919,10 +919,10 @@ static int hpage_collapse_find_target_node(struct collapse_control *cc)
 
 static int hugepage_vma_revalidate(struct mm_struct *mm, unsigned long address,
 				   bool expect_anon,
-				   struct vm_area_struct **vmap,
+				   struct mm_area **vmap,
 				   struct collapse_control *cc)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long tva_flags = cc->is_khugepaged ? TVA_ENFORCE_SYSFS : 0;
 
 	if (unlikely(hpage_collapse_test_exit_or_disable(mm)))
@@ -998,7 +998,7 @@ static int check_pmd_still_valid(struct mm_struct *mm,
  * Returns result: if not SCAN_SUCCEED, mmap_lock has been released.
  */
 static int __collapse_huge_page_swapin(struct mm_struct *mm,
-				       struct vm_area_struct *vma,
+				       struct mm_area *vma,
 				       unsigned long haddr, pmd_t *pmd,
 				       int referenced)
 {
@@ -1112,7 +1112,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address,
 	struct folio *folio;
 	spinlock_t *pmd_ptl, *pte_ptl;
 	int result = SCAN_FAIL;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mmu_notifier_range range;
 
 	VM_BUG_ON(address & ~HPAGE_PMD_MASK);
@@ -1265,7 +1265,7 @@ static int collapse_huge_page(struct mm_struct *mm, unsigned long address,
 }
 
 static int hpage_collapse_scan_pmd(struct mm_struct *mm,
-				   struct vm_area_struct *vma,
+				   struct mm_area *vma,
 				   unsigned long address, bool *mmap_locked,
 				   struct collapse_control *cc)
 {
@@ -1466,7 +1466,7 @@ static void collect_mm_slot(struct khugepaged_mm_slot *mm_slot)
 
 #ifdef CONFIG_SHMEM
 /* hpage must be locked, and mmap_lock must be held */
-static int set_huge_pmd(struct vm_area_struct *vma, unsigned long addr,
+static int set_huge_pmd(struct mm_area *vma, unsigned long addr,
 			pmd_t *pmdp, struct page *hpage)
 {
 	struct vm_fault vmf = {
@@ -1504,7 +1504,7 @@ int collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr,
 	struct mmu_notifier_range range;
 	bool notified = false;
 	unsigned long haddr = addr & HPAGE_PMD_MASK;
-	struct vm_area_struct *vma = vma_lookup(mm, haddr);
+	struct mm_area *vma = vma_lookup(mm, haddr);
 	struct folio *folio;
 	pte_t *start_pte, *pte;
 	pmd_t *pmd, pgt_pmd;
@@ -1713,7 +1713,7 @@ int collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr,
 
 static void retract_page_tables(struct address_space *mapping, pgoff_t pgoff)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	i_mmap_lock_read(mapping);
 	vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) {
@@ -2114,7 +2114,7 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr,
 	}
 
 	if (nr_none) {
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 		int nr_none_check = 0;
 
 		i_mmap_lock_read(mapping);
@@ -2372,7 +2372,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, int *result,
 	struct khugepaged_mm_slot *mm_slot;
 	struct mm_slot *slot;
 	struct mm_struct *mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int progress = 0;
 
 	VM_BUG_ON(!pages);
@@ -2736,7 +2736,7 @@ static int madvise_collapse_errno(enum scan_result r)
 	}
 }
 
-int madvise_collapse(struct vm_area_struct *vma, struct vm_area_struct **prev,
+int madvise_collapse(struct mm_area *vma, struct mm_area **prev,
 		     unsigned long start, unsigned long end)
 {
 	struct collapse_control *cc;
diff --git a/mm/ksm.c b/mm/ksm.c
index 8583fb91ef13..0370e8d4ab02 100644
--- a/mm/ksm.c
+++ b/mm/ksm.c
@@ -620,7 +620,7 @@ static inline bool ksm_test_exit(struct mm_struct *mm)
  * of the process that owns 'vma'.  We also do not want to enforce
  * protection keys here anyway.
  */
-static int break_ksm(struct vm_area_struct *vma, unsigned long addr, bool lock_vma)
+static int break_ksm(struct mm_area *vma, unsigned long addr, bool lock_vma)
 {
 	vm_fault_t ret = 0;
 
@@ -677,7 +677,7 @@ static int break_ksm(struct vm_area_struct *vma, unsigned long addr, bool lock_v
 	return (ret & VM_FAULT_OOM) ? -ENOMEM : 0;
 }
 
-static bool vma_ksm_compatible(struct vm_area_struct *vma)
+static bool vma_ksm_compatible(struct mm_area *vma)
 {
 	if (vma->vm_flags & (VM_SHARED  | VM_MAYSHARE   | VM_PFNMAP  |
 			     VM_IO      | VM_DONTEXPAND | VM_HUGETLB |
@@ -699,10 +699,10 @@ static bool vma_ksm_compatible(struct vm_area_struct *vma)
 	return true;
 }
 
-static struct vm_area_struct *find_mergeable_vma(struct mm_struct *mm,
+static struct mm_area *find_mergeable_vma(struct mm_struct *mm,
 		unsigned long addr)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	if (ksm_test_exit(mm))
 		return NULL;
 	vma = vma_lookup(mm, addr);
@@ -715,7 +715,7 @@ static void break_cow(struct ksm_rmap_item *rmap_item)
 {
 	struct mm_struct *mm = rmap_item->mm;
 	unsigned long addr = rmap_item->address;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	/*
 	 * It is not an accident that whenever we want to break COW
@@ -734,7 +734,7 @@ static struct page *get_mergeable_page(struct ksm_rmap_item *rmap_item)
 {
 	struct mm_struct *mm = rmap_item->mm;
 	unsigned long addr = rmap_item->address;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct page *page = NULL;
 	struct folio_walk fw;
 	struct folio *folio;
@@ -1034,7 +1034,7 @@ static void remove_trailing_rmap_items(struct ksm_rmap_item **rmap_list)
  * to the next pass of ksmd - consider, for example, how ksmd might be
  * in cmp_and_merge_page on one of the rmap_items we would be removing.
  */
-static int unmerge_ksm_pages(struct vm_area_struct *vma,
+static int unmerge_ksm_pages(struct mm_area *vma,
 			     unsigned long start, unsigned long end, bool lock_vma)
 {
 	unsigned long addr;
@@ -1167,7 +1167,7 @@ static int unmerge_and_remove_all_rmap_items(void)
 	struct ksm_mm_slot *mm_slot;
 	struct mm_slot *slot;
 	struct mm_struct *mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int err = 0;
 
 	spin_lock(&ksm_mmlist_lock);
@@ -1243,7 +1243,7 @@ static u32 calc_checksum(struct page *page)
 	return checksum;
 }
 
-static int write_protect_page(struct vm_area_struct *vma, struct folio *folio,
+static int write_protect_page(struct mm_area *vma, struct folio *folio,
 			      pte_t *orig_pte)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -1343,7 +1343,7 @@ static int write_protect_page(struct vm_area_struct *vma, struct folio *folio,
  *
  * Returns 0 on success, -EFAULT on failure.
  */
-static int replace_page(struct vm_area_struct *vma, struct page *page,
+static int replace_page(struct mm_area *vma, struct page *page,
 			struct page *kpage, pte_t orig_pte)
 {
 	struct folio *kfolio = page_folio(kpage);
@@ -1446,7 +1446,7 @@ static int replace_page(struct vm_area_struct *vma, struct page *page,
  *
  * This function returns 0 if the pages were merged, -EFAULT otherwise.
  */
-static int try_to_merge_one_page(struct vm_area_struct *vma,
+static int try_to_merge_one_page(struct mm_area *vma,
 				 struct page *page, struct page *kpage)
 {
 	struct folio *folio = page_folio(page);
@@ -1521,7 +1521,7 @@ static int try_to_merge_with_zero_page(struct ksm_rmap_item *rmap_item,
 	 * appropriate zero page if the user enabled this via sysfs.
 	 */
 	if (ksm_use_zero_pages && (rmap_item->oldchecksum == zero_checksum)) {
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 
 		mmap_read_lock(mm);
 		vma = find_mergeable_vma(mm, rmap_item->address);
@@ -1554,7 +1554,7 @@ static int try_to_merge_with_ksm_page(struct ksm_rmap_item *rmap_item,
 				      struct page *page, struct page *kpage)
 {
 	struct mm_struct *mm = rmap_item->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int err = -EFAULT;
 
 	mmap_read_lock(mm);
@@ -2459,7 +2459,7 @@ static struct ksm_rmap_item *scan_get_next_rmap_item(struct page **page)
 	struct mm_struct *mm;
 	struct ksm_mm_slot *mm_slot;
 	struct mm_slot *slot;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct ksm_rmap_item *rmap_item;
 	struct vma_iterator vmi;
 	int nid;
@@ -2696,7 +2696,7 @@ static int ksm_scan_thread(void *nothing)
 	return 0;
 }
 
-static void __ksm_add_vma(struct vm_area_struct *vma)
+static void __ksm_add_vma(struct mm_area *vma)
 {
 	unsigned long vm_flags = vma->vm_flags;
 
@@ -2707,7 +2707,7 @@ static void __ksm_add_vma(struct vm_area_struct *vma)
 		vm_flags_set(vma, VM_MERGEABLE);
 }
 
-static int __ksm_del_vma(struct vm_area_struct *vma)
+static int __ksm_del_vma(struct mm_area *vma)
 {
 	int err;
 
@@ -2728,7 +2728,7 @@ static int __ksm_del_vma(struct vm_area_struct *vma)
  *
  * @vma:  Pointer to vma
  */
-void ksm_add_vma(struct vm_area_struct *vma)
+void ksm_add_vma(struct mm_area *vma)
 {
 	struct mm_struct *mm = vma->vm_mm;
 
@@ -2738,7 +2738,7 @@ void ksm_add_vma(struct vm_area_struct *vma)
 
 static void ksm_add_vmas(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	VMA_ITERATOR(vmi, mm, 0);
 	for_each_vma(vmi, vma)
@@ -2747,7 +2747,7 @@ static void ksm_add_vmas(struct mm_struct *mm)
 
 static int ksm_del_vmas(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int err;
 
 	VMA_ITERATOR(vmi, mm, 0);
@@ -2826,7 +2826,7 @@ int ksm_disable(struct mm_struct *mm)
 	return ksm_del_vmas(mm);
 }
 
-int ksm_madvise(struct vm_area_struct *vma, unsigned long start,
+int ksm_madvise(struct mm_area *vma, unsigned long start,
 		unsigned long end, int advice, unsigned long *vm_flags)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -2953,7 +2953,7 @@ void __ksm_exit(struct mm_struct *mm)
 }
 
 struct folio *ksm_might_need_to_copy(struct folio *folio,
-			struct vm_area_struct *vma, unsigned long addr)
+			struct mm_area *vma, unsigned long addr)
 {
 	struct page *page = folio_page(folio, 0);
 	struct anon_vma *anon_vma = folio_anon_vma(folio);
@@ -3021,7 +3021,7 @@ void rmap_walk_ksm(struct folio *folio, struct rmap_walk_control *rwc)
 	hlist_for_each_entry(rmap_item, &stable_node->hlist, hlist) {
 		struct anon_vma *anon_vma = rmap_item->anon_vma;
 		struct anon_vma_chain *vmac;
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 
 		cond_resched();
 		if (!anon_vma_trylock_read(anon_vma)) {
@@ -3079,7 +3079,7 @@ void collect_procs_ksm(const struct folio *folio, const struct page *page,
 {
 	struct ksm_stable_node *stable_node;
 	struct ksm_rmap_item *rmap_item;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct task_struct *tsk;
 
 	stable_node = folio_stable_node(folio);
@@ -3277,7 +3277,7 @@ static void wait_while_offlining(void)
  */
 bool ksm_process_mergeable(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	mmap_assert_locked(mm);
 	VMA_ITERATOR(vmi, mm, 0);
diff --git a/mm/madvise.c b/mm/madvise.c
index b17f684322ad..8e401df400b1 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -99,7 +99,7 @@ void anon_vma_name_free(struct kref *kref)
 	kfree(anon_name);
 }
 
-struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma)
+struct anon_vma_name *anon_vma_name(struct mm_area *vma)
 {
 	mmap_assert_locked(vma->vm_mm);
 
@@ -107,7 +107,7 @@ struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma)
 }
 
 /* mmap_lock should be write-locked */
-static int replace_anon_vma_name(struct vm_area_struct *vma,
+static int replace_anon_vma_name(struct mm_area *vma,
 				 struct anon_vma_name *anon_name)
 {
 	struct anon_vma_name *orig_name = anon_vma_name(vma);
@@ -127,7 +127,7 @@ static int replace_anon_vma_name(struct vm_area_struct *vma,
 	return 0;
 }
 #else /* CONFIG_ANON_VMA_NAME */
-static int replace_anon_vma_name(struct vm_area_struct *vma,
+static int replace_anon_vma_name(struct mm_area *vma,
 				 struct anon_vma_name *anon_name)
 {
 	if (anon_name)
@@ -142,8 +142,8 @@ static int replace_anon_vma_name(struct vm_area_struct *vma,
  * Caller should ensure anon_name stability by raising its refcount even when
  * anon_name belongs to a valid vma because this function might free that vma.
  */
-static int madvise_update_vma(struct vm_area_struct *vma,
-			      struct vm_area_struct **prev, unsigned long start,
+static int madvise_update_vma(struct mm_area *vma,
+			      struct mm_area **prev, unsigned long start,
 			      unsigned long end, unsigned long new_flags,
 			      struct anon_vma_name *anon_name)
 {
@@ -179,7 +179,7 @@ static int madvise_update_vma(struct vm_area_struct *vma,
 static int swapin_walk_pmd_entry(pmd_t *pmd, unsigned long start,
 		unsigned long end, struct mm_walk *walk)
 {
-	struct vm_area_struct *vma = walk->private;
+	struct mm_area *vma = walk->private;
 	struct swap_iocb *splug = NULL;
 	pte_t *ptep = NULL;
 	spinlock_t *ptl;
@@ -225,7 +225,7 @@ static const struct mm_walk_ops swapin_walk_ops = {
 	.walk_lock		= PGWALK_RDLOCK,
 };
 
-static void shmem_swapin_range(struct vm_area_struct *vma,
+static void shmem_swapin_range(struct mm_area *vma,
 		unsigned long start, unsigned long end,
 		struct address_space *mapping)
 {
@@ -266,8 +266,8 @@ static void shmem_swapin_range(struct vm_area_struct *vma,
 /*
  * Schedule all required I/O operations.  Do not wait for completion.
  */
-static long madvise_willneed(struct vm_area_struct *vma,
-			     struct vm_area_struct **prev,
+static long madvise_willneed(struct mm_area *vma,
+			     struct mm_area **prev,
 			     unsigned long start, unsigned long end)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -314,7 +314,7 @@ static long madvise_willneed(struct vm_area_struct *vma,
 	return 0;
 }
 
-static inline bool can_do_file_pageout(struct vm_area_struct *vma)
+static inline bool can_do_file_pageout(struct mm_area *vma)
 {
 	if (!vma->vm_file)
 		return false;
@@ -349,7 +349,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd,
 	struct mmu_gather *tlb = private->tlb;
 	bool pageout = private->pageout;
 	struct mm_struct *mm = tlb->mm;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	pte_t *start_pte, *pte, ptent;
 	spinlock_t *ptl;
 	struct folio *folio = NULL;
@@ -567,7 +567,7 @@ static const struct mm_walk_ops cold_walk_ops = {
 };
 
 static void madvise_cold_page_range(struct mmu_gather *tlb,
-			     struct vm_area_struct *vma,
+			     struct mm_area *vma,
 			     unsigned long addr, unsigned long end)
 {
 	struct madvise_walk_private walk_private = {
@@ -580,13 +580,13 @@ static void madvise_cold_page_range(struct mmu_gather *tlb,
 	tlb_end_vma(tlb, vma);
 }
 
-static inline bool can_madv_lru_vma(struct vm_area_struct *vma)
+static inline bool can_madv_lru_vma(struct mm_area *vma)
 {
 	return !(vma->vm_flags & (VM_LOCKED|VM_PFNMAP|VM_HUGETLB));
 }
 
-static long madvise_cold(struct vm_area_struct *vma,
-			struct vm_area_struct **prev,
+static long madvise_cold(struct mm_area *vma,
+			struct mm_area **prev,
 			unsigned long start_addr, unsigned long end_addr)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -605,7 +605,7 @@ static long madvise_cold(struct vm_area_struct *vma,
 }
 
 static void madvise_pageout_page_range(struct mmu_gather *tlb,
-			     struct vm_area_struct *vma,
+			     struct mm_area *vma,
 			     unsigned long addr, unsigned long end)
 {
 	struct madvise_walk_private walk_private = {
@@ -618,8 +618,8 @@ static void madvise_pageout_page_range(struct mmu_gather *tlb,
 	tlb_end_vma(tlb, vma);
 }
 
-static long madvise_pageout(struct vm_area_struct *vma,
-			struct vm_area_struct **prev,
+static long madvise_pageout(struct mm_area *vma,
+			struct mm_area **prev,
 			unsigned long start_addr, unsigned long end_addr)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -654,7 +654,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsigned long addr,
 	const cydp_t cydp_flags = CYDP_CLEAR_YOUNG | CYDP_CLEAR_DIRTY;
 	struct mmu_gather *tlb = walk->private;
 	struct mm_struct *mm = tlb->mm;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	spinlock_t *ptl;
 	pte_t *start_pte, *pte, ptent;
 	struct folio *folio;
@@ -794,7 +794,7 @@ static const struct mm_walk_ops madvise_free_walk_ops = {
 	.walk_lock		= PGWALK_RDLOCK,
 };
 
-static int madvise_free_single_vma(struct vm_area_struct *vma,
+static int madvise_free_single_vma(struct mm_area *vma,
 			unsigned long start_addr, unsigned long end_addr)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -848,7 +848,7 @@ static int madvise_free_single_vma(struct vm_area_struct *vma,
  * An interface that causes the system to free clean pages and flush
  * dirty pages is already available as msync(MS_INVALIDATE).
  */
-static long madvise_dontneed_single_vma(struct vm_area_struct *vma,
+static long madvise_dontneed_single_vma(struct mm_area *vma,
 					unsigned long start, unsigned long end)
 {
 	struct zap_details details = {
@@ -860,7 +860,7 @@ static long madvise_dontneed_single_vma(struct vm_area_struct *vma,
 	return 0;
 }
 
-static bool madvise_dontneed_free_valid_vma(struct vm_area_struct *vma,
+static bool madvise_dontneed_free_valid_vma(struct mm_area *vma,
 					    unsigned long start,
 					    unsigned long *end,
 					    int behavior)
@@ -890,8 +890,8 @@ static bool madvise_dontneed_free_valid_vma(struct vm_area_struct *vma,
 	return true;
 }
 
-static long madvise_dontneed_free(struct vm_area_struct *vma,
-				  struct vm_area_struct **prev,
+static long madvise_dontneed_free(struct mm_area *vma,
+				  struct mm_area **prev,
 				  unsigned long start, unsigned long end,
 				  int behavior)
 {
@@ -994,8 +994,8 @@ static long madvise_populate(struct mm_struct *mm, unsigned long start,
  * Application wants to free up the pages and associated backing store.
  * This is effectively punching a hole into the middle of a file.
  */
-static long madvise_remove(struct vm_area_struct *vma,
-				struct vm_area_struct **prev,
+static long madvise_remove(struct mm_area *vma,
+				struct mm_area **prev,
 				unsigned long start, unsigned long end)
 {
 	loff_t offset;
@@ -1039,7 +1039,7 @@ static long madvise_remove(struct vm_area_struct *vma,
 	return error;
 }
 
-static bool is_valid_guard_vma(struct vm_area_struct *vma, bool allow_locked)
+static bool is_valid_guard_vma(struct mm_area *vma, bool allow_locked)
 {
 	vm_flags_t disallowed = VM_SPECIAL | VM_HUGETLB;
 
@@ -1115,8 +1115,8 @@ static const struct mm_walk_ops guard_install_walk_ops = {
 	.walk_lock		= PGWALK_RDLOCK,
 };
 
-static long madvise_guard_install(struct vm_area_struct *vma,
-				 struct vm_area_struct **prev,
+static long madvise_guard_install(struct mm_area *vma,
+				 struct mm_area **prev,
 				 unsigned long start, unsigned long end)
 {
 	long err;
@@ -1225,8 +1225,8 @@ static const struct mm_walk_ops guard_remove_walk_ops = {
 	.walk_lock		= PGWALK_RDLOCK,
 };
 
-static long madvise_guard_remove(struct vm_area_struct *vma,
-				 struct vm_area_struct **prev,
+static long madvise_guard_remove(struct mm_area *vma,
+				 struct mm_area **prev,
 				 unsigned long start, unsigned long end)
 {
 	*prev = vma;
@@ -1246,8 +1246,8 @@ static long madvise_guard_remove(struct vm_area_struct *vma,
  * will handle splitting a vm area into separate areas, each area with its own
  * behavior.
  */
-static int madvise_vma_behavior(struct vm_area_struct *vma,
-				struct vm_area_struct **prev,
+static int madvise_vma_behavior(struct mm_area *vma,
+				struct mm_area **prev,
 				unsigned long start, unsigned long end,
 				unsigned long behavior)
 {
@@ -1488,12 +1488,12 @@ static bool process_madvise_remote_valid(int behavior)
 static
 int madvise_walk_vmas(struct mm_struct *mm, unsigned long start,
 		      unsigned long end, unsigned long arg,
-		      int (*visit)(struct vm_area_struct *vma,
-				   struct vm_area_struct **prev, unsigned long start,
+		      int (*visit)(struct mm_area *vma,
+				   struct mm_area **prev, unsigned long start,
 				   unsigned long end, unsigned long arg))
 {
-	struct vm_area_struct *vma;
-	struct vm_area_struct *prev;
+	struct mm_area *vma;
+	struct mm_area *prev;
 	unsigned long tmp;
 	int unmapped_error = 0;
 
@@ -1545,8 +1545,8 @@ int madvise_walk_vmas(struct mm_struct *mm, unsigned long start,
 }
 
 #ifdef CONFIG_ANON_VMA_NAME
-static int madvise_vma_anon_name(struct vm_area_struct *vma,
-				 struct vm_area_struct **prev,
+static int madvise_vma_anon_name(struct mm_area *vma,
+				 struct mm_area **prev,
 				 unsigned long start, unsigned long end,
 				 unsigned long anon_name)
 {
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index b91a33fb6c69..8a194e377443 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -398,7 +398,7 @@ static void shake_page(struct page *page)
 	shake_folio(page_folio(page));
 }
 
-static unsigned long dev_pagemap_mapping_shift(struct vm_area_struct *vma,
+static unsigned long dev_pagemap_mapping_shift(struct mm_area *vma,
 		unsigned long address)
 {
 	unsigned long ret = 0;
@@ -446,7 +446,7 @@ static unsigned long dev_pagemap_mapping_shift(struct vm_area_struct *vma,
  * Uses GFP_ATOMIC allocations to avoid potential recursions in the VM.
  */
 static void __add_to_kill(struct task_struct *tsk, const struct page *p,
-			  struct vm_area_struct *vma, struct list_head *to_kill,
+			  struct mm_area *vma, struct list_head *to_kill,
 			  unsigned long addr)
 {
 	struct to_kill *tk;
@@ -487,7 +487,7 @@ static void __add_to_kill(struct task_struct *tsk, const struct page *p,
 }
 
 static void add_to_kill_anon_file(struct task_struct *tsk, const struct page *p,
-		struct vm_area_struct *vma, struct list_head *to_kill,
+		struct mm_area *vma, struct list_head *to_kill,
 		unsigned long addr)
 {
 	if (addr == -EFAULT)
@@ -510,7 +510,7 @@ static bool task_in_to_kill_list(struct list_head *to_kill,
 }
 
 void add_to_kill_ksm(struct task_struct *tsk, const struct page *p,
-		     struct vm_area_struct *vma, struct list_head *to_kill,
+		     struct mm_area *vma, struct list_head *to_kill,
 		     unsigned long addr)
 {
 	if (!task_in_to_kill_list(to_kill, tsk))
@@ -621,7 +621,7 @@ static void collect_procs_anon(const struct folio *folio,
 	pgoff = page_pgoff(folio, page);
 	rcu_read_lock();
 	for_each_process(tsk) {
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 		struct anon_vma_chain *vmac;
 		struct task_struct *t = task_early_kill(tsk, force_early);
 		unsigned long addr;
@@ -648,7 +648,7 @@ static void collect_procs_file(const struct folio *folio,
 		const struct page *page, struct list_head *to_kill,
 		int force_early)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct task_struct *tsk;
 	struct address_space *mapping = folio->mapping;
 	pgoff_t pgoff;
@@ -683,7 +683,7 @@ static void collect_procs_file(const struct folio *folio,
 
 #ifdef CONFIG_FS_DAX
 static void add_to_kill_fsdax(struct task_struct *tsk, const struct page *p,
-			      struct vm_area_struct *vma,
+			      struct mm_area *vma,
 			      struct list_head *to_kill, pgoff_t pgoff)
 {
 	unsigned long addr = vma_address(vma, pgoff, 1);
@@ -697,7 +697,7 @@ static void collect_procs_fsdax(const struct page *page,
 		struct address_space *mapping, pgoff_t pgoff,
 		struct list_head *to_kill, bool pre_remove)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct task_struct *tsk;
 
 	i_mmap_lock_read(mapping);
diff --git a/mm/memory.c b/mm/memory.c
index 9d0ba6fe73c1..854615d98d2b 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -344,14 +344,14 @@ void free_pgd_range(struct mmu_gather *tlb,
 }
 
 void free_pgtables(struct mmu_gather *tlb, struct ma_state *mas,
-		   struct vm_area_struct *vma, unsigned long floor,
+		   struct mm_area *vma, unsigned long floor,
 		   unsigned long ceiling, bool mm_wr_locked)
 {
 	struct unlink_vma_file_batch vb;
 
 	do {
 		unsigned long addr = vma->vm_start;
-		struct vm_area_struct *next;
+		struct mm_area *next;
 
 		/*
 		 * Note: USER_PGTABLES_CEILING may be passed as ceiling and may
@@ -476,7 +476,7 @@ static inline void add_mm_rss_vec(struct mm_struct *mm, int *rss)
  *
  * The calling function must still handle the error.
  */
-static void print_bad_pte(struct vm_area_struct *vma, unsigned long addr,
+static void print_bad_pte(struct mm_area *vma, unsigned long addr,
 			  pte_t pte, struct page *page)
 {
 	pgd_t *pgd = pgd_offset(vma->vm_mm, addr);
@@ -572,7 +572,7 @@ static void print_bad_pte(struct vm_area_struct *vma, unsigned long addr,
  * order to support COWable mappings.
  *
  */
-struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr,
+struct page *vm_normal_page(struct mm_area *vma, unsigned long addr,
 			    pte_t pte)
 {
 	unsigned long pfn = pte_pfn(pte);
@@ -638,7 +638,7 @@ struct page *vm_normal_page(struct vm_area_struct *vma, unsigned long addr,
 	return pfn_to_page(pfn);
 }
 
-struct folio *vm_normal_folio(struct vm_area_struct *vma, unsigned long addr,
+struct folio *vm_normal_folio(struct mm_area *vma, unsigned long addr,
 			    pte_t pte)
 {
 	struct page *page = vm_normal_page(vma, addr, pte);
@@ -649,7 +649,7 @@ struct folio *vm_normal_folio(struct vm_area_struct *vma, unsigned long addr,
 }
 
 #ifdef CONFIG_PGTABLE_HAS_HUGE_LEAVES
-struct page *vm_normal_page_pmd(struct vm_area_struct *vma, unsigned long addr,
+struct page *vm_normal_page_pmd(struct mm_area *vma, unsigned long addr,
 				pmd_t pmd)
 {
 	unsigned long pfn = pmd_pfn(pmd);
@@ -688,7 +688,7 @@ struct page *vm_normal_page_pmd(struct vm_area_struct *vma, unsigned long addr,
 	return pfn_to_page(pfn);
 }
 
-struct folio *vm_normal_folio_pmd(struct vm_area_struct *vma,
+struct folio *vm_normal_folio_pmd(struct mm_area *vma,
 				  unsigned long addr, pmd_t pmd)
 {
 	struct page *page = vm_normal_page_pmd(vma, addr, pmd);
@@ -725,7 +725,7 @@ struct folio *vm_normal_folio_pmd(struct vm_area_struct *vma,
  * page table modifications (e.g., MADV_DONTNEED, mprotect), so device drivers
  * must use MMU notifiers to sync against any concurrent changes.
  */
-static void restore_exclusive_pte(struct vm_area_struct *vma,
+static void restore_exclusive_pte(struct mm_area *vma,
 		struct folio *folio, struct page *page, unsigned long address,
 		pte_t *ptep, pte_t orig_pte)
 {
@@ -759,7 +759,7 @@ static void restore_exclusive_pte(struct vm_area_struct *vma,
  * Tries to restore an exclusive pte if the page lock can be acquired without
  * sleeping.
  */
-static int try_restore_exclusive_pte(struct vm_area_struct *vma,
+static int try_restore_exclusive_pte(struct mm_area *vma,
 		unsigned long addr, pte_t *ptep, pte_t orig_pte)
 {
 	struct page *page = pfn_swap_entry_to_page(pte_to_swp_entry(orig_pte));
@@ -782,8 +782,8 @@ static int try_restore_exclusive_pte(struct vm_area_struct *vma,
 
 static unsigned long
 copy_nonpresent_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm,
-		pte_t *dst_pte, pte_t *src_pte, struct vm_area_struct *dst_vma,
-		struct vm_area_struct *src_vma, unsigned long addr, int *rss)
+		pte_t *dst_pte, pte_t *src_pte, struct mm_area *dst_vma,
+		struct mm_area *src_vma, unsigned long addr, int *rss)
 {
 	unsigned long vm_flags = dst_vma->vm_flags;
 	pte_t orig_pte = ptep_get(src_pte);
@@ -903,7 +903,7 @@ copy_nonpresent_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm,
  * lock.
  */
 static inline int
-copy_present_page(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
+copy_present_page(struct mm_area *dst_vma, struct mm_area *src_vma,
 		  pte_t *dst_pte, pte_t *src_pte, unsigned long addr, int *rss,
 		  struct folio **prealloc, struct page *page)
 {
@@ -938,8 +938,8 @@ copy_present_page(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma
 	return 0;
 }
 
-static __always_inline void __copy_present_ptes(struct vm_area_struct *dst_vma,
-		struct vm_area_struct *src_vma, pte_t *dst_pte, pte_t *src_pte,
+static __always_inline void __copy_present_ptes(struct mm_area *dst_vma,
+		struct mm_area *src_vma, pte_t *dst_pte, pte_t *src_pte,
 		pte_t pte, unsigned long addr, int nr)
 {
 	struct mm_struct *src_mm = src_vma->vm_mm;
@@ -969,7 +969,7 @@ static __always_inline void __copy_present_ptes(struct vm_area_struct *dst_vma,
  * Otherwise, returns the number of copied PTEs (at least 1).
  */
 static inline int
-copy_present_ptes(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
+copy_present_ptes(struct mm_area *dst_vma, struct mm_area *src_vma,
 		 pte_t *dst_pte, pte_t *src_pte, pte_t pte, unsigned long addr,
 		 int max_nr, int *rss, struct folio **prealloc)
 {
@@ -1046,7 +1046,7 @@ copy_present_ptes(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma
 }
 
 static inline struct folio *folio_prealloc(struct mm_struct *src_mm,
-		struct vm_area_struct *vma, unsigned long addr, bool need_zero)
+		struct mm_area *vma, unsigned long addr, bool need_zero)
 {
 	struct folio *new_folio;
 
@@ -1068,7 +1068,7 @@ static inline struct folio *folio_prealloc(struct mm_struct *src_mm,
 }
 
 static int
-copy_pte_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
+copy_pte_range(struct mm_area *dst_vma, struct mm_area *src_vma,
 	       pmd_t *dst_pmd, pmd_t *src_pmd, unsigned long addr,
 	       unsigned long end)
 {
@@ -1223,7 +1223,7 @@ copy_pte_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
 }
 
 static inline int
-copy_pmd_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
+copy_pmd_range(struct mm_area *dst_vma, struct mm_area *src_vma,
 	       pud_t *dst_pud, pud_t *src_pud, unsigned long addr,
 	       unsigned long end)
 {
@@ -1260,7 +1260,7 @@ copy_pmd_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
 }
 
 static inline int
-copy_pud_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
+copy_pud_range(struct mm_area *dst_vma, struct mm_area *src_vma,
 	       p4d_t *dst_p4d, p4d_t *src_p4d, unsigned long addr,
 	       unsigned long end)
 {
@@ -1297,7 +1297,7 @@ copy_pud_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
 }
 
 static inline int
-copy_p4d_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
+copy_p4d_range(struct mm_area *dst_vma, struct mm_area *src_vma,
 	       pgd_t *dst_pgd, pgd_t *src_pgd, unsigned long addr,
 	       unsigned long end)
 {
@@ -1326,7 +1326,7 @@ copy_p4d_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma,
  * when the child accesses the memory range.
  */
 static bool
-vma_needs_copy(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma)
+vma_needs_copy(struct mm_area *dst_vma, struct mm_area *src_vma)
 {
 	/*
 	 * Always copy pgtables when dst_vma has uffd-wp enabled even if it's
@@ -1353,7 +1353,7 @@ vma_needs_copy(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma)
 }
 
 int
-copy_page_range(struct vm_area_struct *dst_vma, struct vm_area_struct *src_vma)
+copy_page_range(struct mm_area *dst_vma, struct mm_area *src_vma)
 {
 	pgd_t *src_pgd, *dst_pgd;
 	unsigned long addr = src_vma->vm_start;
@@ -1461,7 +1461,7 @@ static inline bool zap_drop_markers(struct zap_details *details)
  * Returns true if uffd-wp ptes was installed, false otherwise.
  */
 static inline bool
-zap_install_uffd_wp_if_needed(struct vm_area_struct *vma,
+zap_install_uffd_wp_if_needed(struct mm_area *vma,
 			      unsigned long addr, pte_t *pte, int nr,
 			      struct zap_details *details, pte_t pteval)
 {
@@ -1489,7 +1489,7 @@ zap_install_uffd_wp_if_needed(struct vm_area_struct *vma,
 }
 
 static __always_inline void zap_present_folio_ptes(struct mmu_gather *tlb,
-		struct vm_area_struct *vma, struct folio *folio,
+		struct mm_area *vma, struct folio *folio,
 		struct page *page, pte_t *pte, pte_t ptent, unsigned int nr,
 		unsigned long addr, struct zap_details *details, int *rss,
 		bool *force_flush, bool *force_break, bool *any_skipped)
@@ -1540,7 +1540,7 @@ static __always_inline void zap_present_folio_ptes(struct mmu_gather *tlb,
  * Returns the number of processed (skipped or zapped) PTEs (at least 1).
  */
 static inline int zap_present_ptes(struct mmu_gather *tlb,
-		struct vm_area_struct *vma, pte_t *pte, pte_t ptent,
+		struct mm_area *vma, pte_t *pte, pte_t ptent,
 		unsigned int max_nr, unsigned long addr,
 		struct zap_details *details, int *rss, bool *force_flush,
 		bool *force_break, bool *any_skipped)
@@ -1589,7 +1589,7 @@ static inline int zap_present_ptes(struct mmu_gather *tlb,
 }
 
 static inline int zap_nonpresent_ptes(struct mmu_gather *tlb,
-		struct vm_area_struct *vma, pte_t *pte, pte_t ptent,
+		struct mm_area *vma, pte_t *pte, pte_t ptent,
 		unsigned int max_nr, unsigned long addr,
 		struct zap_details *details, int *rss, bool *any_skipped)
 {
@@ -1659,7 +1659,7 @@ static inline int zap_nonpresent_ptes(struct mmu_gather *tlb,
 }
 
 static inline int do_zap_pte_range(struct mmu_gather *tlb,
-				   struct vm_area_struct *vma, pte_t *pte,
+				   struct mm_area *vma, pte_t *pte,
 				   unsigned long addr, unsigned long end,
 				   struct zap_details *details, int *rss,
 				   bool *force_flush, bool *force_break,
@@ -1695,7 +1695,7 @@ static inline int do_zap_pte_range(struct mmu_gather *tlb,
 }
 
 static unsigned long zap_pte_range(struct mmu_gather *tlb,
-				struct vm_area_struct *vma, pmd_t *pmd,
+				struct mm_area *vma, pmd_t *pmd,
 				unsigned long addr, unsigned long end,
 				struct zap_details *details)
 {
@@ -1787,7 +1787,7 @@ static unsigned long zap_pte_range(struct mmu_gather *tlb,
 }
 
 static inline unsigned long zap_pmd_range(struct mmu_gather *tlb,
-				struct vm_area_struct *vma, pud_t *pud,
+				struct mm_area *vma, pud_t *pud,
 				unsigned long addr, unsigned long end,
 				struct zap_details *details)
 {
@@ -1829,7 +1829,7 @@ static inline unsigned long zap_pmd_range(struct mmu_gather *tlb,
 }
 
 static inline unsigned long zap_pud_range(struct mmu_gather *tlb,
-				struct vm_area_struct *vma, p4d_t *p4d,
+				struct mm_area *vma, p4d_t *p4d,
 				unsigned long addr, unsigned long end,
 				struct zap_details *details)
 {
@@ -1858,7 +1858,7 @@ static inline unsigned long zap_pud_range(struct mmu_gather *tlb,
 }
 
 static inline unsigned long zap_p4d_range(struct mmu_gather *tlb,
-				struct vm_area_struct *vma, pgd_t *pgd,
+				struct mm_area *vma, pgd_t *pgd,
 				unsigned long addr, unsigned long end,
 				struct zap_details *details)
 {
@@ -1877,7 +1877,7 @@ static inline unsigned long zap_p4d_range(struct mmu_gather *tlb,
 }
 
 void unmap_page_range(struct mmu_gather *tlb,
-			     struct vm_area_struct *vma,
+			     struct mm_area *vma,
 			     unsigned long addr, unsigned long end,
 			     struct zap_details *details)
 {
@@ -1898,7 +1898,7 @@ void unmap_page_range(struct mmu_gather *tlb,
 
 
 static void unmap_single_vma(struct mmu_gather *tlb,
-		struct vm_area_struct *vma, unsigned long start_addr,
+		struct mm_area *vma, unsigned long start_addr,
 		unsigned long end_addr,
 		struct zap_details *details, bool mm_wr_locked)
 {
@@ -1963,7 +1963,7 @@ static void unmap_single_vma(struct mmu_gather *tlb,
  * drops the lock and schedules.
  */
 void unmap_vmas(struct mmu_gather *tlb, struct ma_state *mas,
-		struct vm_area_struct *vma, unsigned long start_addr,
+		struct mm_area *vma, unsigned long start_addr,
 		unsigned long end_addr, unsigned long tree_end,
 		bool mm_wr_locked)
 {
@@ -1991,14 +1991,14 @@ void unmap_vmas(struct mmu_gather *tlb, struct ma_state *mas,
 
 /**
  * zap_page_range_single - remove user pages in a given range
- * @vma: vm_area_struct holding the applicable pages
+ * @vma: mm_area holding the applicable pages
  * @address: starting address of pages to zap
  * @size: number of bytes to zap
  * @details: details of shared cache invalidation
  *
  * The range must fit into one VMA.
  */
-void zap_page_range_single(struct vm_area_struct *vma, unsigned long address,
+void zap_page_range_single(struct mm_area *vma, unsigned long address,
 		unsigned long size, struct zap_details *details)
 {
 	const unsigned long end = address + size;
@@ -2023,7 +2023,7 @@ void zap_page_range_single(struct vm_area_struct *vma, unsigned long address,
 
 /**
  * zap_vma_ptes - remove ptes mapping the vma
- * @vma: vm_area_struct holding ptes to be zapped
+ * @vma: mm_area holding ptes to be zapped
  * @address: starting address of pages to zap
  * @size: number of bytes to zap
  *
@@ -2032,7 +2032,7 @@ void zap_page_range_single(struct vm_area_struct *vma, unsigned long address,
  * The entire address range must be fully contained within the vma.
  *
  */
-void zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
+void zap_vma_ptes(struct mm_area *vma, unsigned long address,
 		unsigned long size)
 {
 	if (!range_in_vma(vma, address, address + size) ||
@@ -2075,7 +2075,7 @@ pte_t *__get_locked_pte(struct mm_struct *mm, unsigned long addr,
 	return pte_alloc_map_lock(mm, pmd, addr, ptl);
 }
 
-static bool vm_mixed_zeropage_allowed(struct vm_area_struct *vma)
+static bool vm_mixed_zeropage_allowed(struct mm_area *vma)
 {
 	VM_WARN_ON_ONCE(vma->vm_flags & VM_PFNMAP);
 	/*
@@ -2105,7 +2105,7 @@ static bool vm_mixed_zeropage_allowed(struct vm_area_struct *vma)
 	       (vma_is_fsdax(vma) || vma->vm_flags & VM_IO);
 }
 
-static int validate_page_before_insert(struct vm_area_struct *vma,
+static int validate_page_before_insert(struct mm_area *vma,
 				       struct page *page)
 {
 	struct folio *folio = page_folio(page);
@@ -2124,7 +2124,7 @@ static int validate_page_before_insert(struct vm_area_struct *vma,
 	return 0;
 }
 
-static int insert_page_into_pte_locked(struct vm_area_struct *vma, pte_t *pte,
+static int insert_page_into_pte_locked(struct mm_area *vma, pte_t *pte,
 				unsigned long addr, struct page *page,
 				pgprot_t prot, bool mkwrite)
 {
@@ -2165,7 +2165,7 @@ static int insert_page_into_pte_locked(struct vm_area_struct *vma, pte_t *pte,
 	return 0;
 }
 
-static int insert_page(struct vm_area_struct *vma, unsigned long addr,
+static int insert_page(struct mm_area *vma, unsigned long addr,
 			struct page *page, pgprot_t prot, bool mkwrite)
 {
 	int retval;
@@ -2186,7 +2186,7 @@ static int insert_page(struct vm_area_struct *vma, unsigned long addr,
 	return retval;
 }
 
-static int insert_page_in_batch_locked(struct vm_area_struct *vma, pte_t *pte,
+static int insert_page_in_batch_locked(struct mm_area *vma, pte_t *pte,
 			unsigned long addr, struct page *page, pgprot_t prot)
 {
 	int err;
@@ -2200,7 +2200,7 @@ static int insert_page_in_batch_locked(struct vm_area_struct *vma, pte_t *pte,
 /* insert_pages() amortizes the cost of spinlock operations
  * when inserting pages in a loop.
  */
-static int insert_pages(struct vm_area_struct *vma, unsigned long addr,
+static int insert_pages(struct mm_area *vma, unsigned long addr,
 			struct page **pages, unsigned long *num, pgprot_t prot)
 {
 	pmd_t *pmd = NULL;
@@ -2273,7 +2273,7 @@ static int insert_pages(struct vm_area_struct *vma, unsigned long addr,
  *
  * The same restrictions apply as in vm_insert_page().
  */
-int vm_insert_pages(struct vm_area_struct *vma, unsigned long addr,
+int vm_insert_pages(struct mm_area *vma, unsigned long addr,
 			struct page **pages, unsigned long *num)
 {
 	const unsigned long end_addr = addr + (*num * PAGE_SIZE) - 1;
@@ -2320,7 +2320,7 @@ EXPORT_SYMBOL(vm_insert_pages);
  *
  * Return: %0 on success, negative error code otherwise.
  */
-int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
+int vm_insert_page(struct mm_area *vma, unsigned long addr,
 			struct page *page)
 {
 	if (addr < vma->vm_start || addr >= vma->vm_end)
@@ -2347,7 +2347,7 @@ EXPORT_SYMBOL(vm_insert_page);
  *
  * Return: 0 on success and error code otherwise.
  */
-static int __vm_map_pages(struct vm_area_struct *vma, struct page **pages,
+static int __vm_map_pages(struct mm_area *vma, struct page **pages,
 				unsigned long num, unsigned long offset)
 {
 	unsigned long count = vma_pages(vma);
@@ -2390,7 +2390,7 @@ static int __vm_map_pages(struct vm_area_struct *vma, struct page **pages,
  * Context: Process context. Called by mmap handlers.
  * Return: 0 on success and error code otherwise.
  */
-int vm_map_pages(struct vm_area_struct *vma, struct page **pages,
+int vm_map_pages(struct mm_area *vma, struct page **pages,
 				unsigned long num)
 {
 	return __vm_map_pages(vma, pages, num, vma->vm_pgoff);
@@ -2410,14 +2410,14 @@ EXPORT_SYMBOL(vm_map_pages);
  * Context: Process context. Called by mmap handlers.
  * Return: 0 on success and error code otherwise.
  */
-int vm_map_pages_zero(struct vm_area_struct *vma, struct page **pages,
+int vm_map_pages_zero(struct mm_area *vma, struct page **pages,
 				unsigned long num)
 {
 	return __vm_map_pages(vma, pages, num, 0);
 }
 EXPORT_SYMBOL(vm_map_pages_zero);
 
-static vm_fault_t insert_pfn(struct vm_area_struct *vma, unsigned long addr,
+static vm_fault_t insert_pfn(struct mm_area *vma, unsigned long addr,
 			pfn_t pfn, pgprot_t prot, bool mkwrite)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -2504,7 +2504,7 @@ static vm_fault_t insert_pfn(struct vm_area_struct *vma, unsigned long addr,
  * Context: Process context.  May allocate using %GFP_KERNEL.
  * Return: vm_fault_t value.
  */
-vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr,
+vm_fault_t vmf_insert_pfn_prot(struct mm_area *vma, unsigned long addr,
 			unsigned long pfn, pgprot_t pgprot)
 {
 	/*
@@ -2552,14 +2552,14 @@ EXPORT_SYMBOL(vmf_insert_pfn_prot);
  * Context: Process context.  May allocate using %GFP_KERNEL.
  * Return: vm_fault_t value.
  */
-vm_fault_t vmf_insert_pfn(struct vm_area_struct *vma, unsigned long addr,
+vm_fault_t vmf_insert_pfn(struct mm_area *vma, unsigned long addr,
 			unsigned long pfn)
 {
 	return vmf_insert_pfn_prot(vma, addr, pfn, vma->vm_page_prot);
 }
 EXPORT_SYMBOL(vmf_insert_pfn);
 
-static bool vm_mixed_ok(struct vm_area_struct *vma, pfn_t pfn, bool mkwrite)
+static bool vm_mixed_ok(struct mm_area *vma, pfn_t pfn, bool mkwrite)
 {
 	if (unlikely(is_zero_pfn(pfn_t_to_pfn(pfn))) &&
 	    (mkwrite || !vm_mixed_zeropage_allowed(vma)))
@@ -2576,7 +2576,7 @@ static bool vm_mixed_ok(struct vm_area_struct *vma, pfn_t pfn, bool mkwrite)
 	return false;
 }
 
-static vm_fault_t __vm_insert_mixed(struct vm_area_struct *vma,
+static vm_fault_t __vm_insert_mixed(struct mm_area *vma,
 		unsigned long addr, pfn_t pfn, bool mkwrite)
 {
 	pgprot_t pgprot = vma->vm_page_prot;
@@ -2643,7 +2643,7 @@ vm_fault_t vmf_insert_page_mkwrite(struct vm_fault *vmf, struct page *page,
 }
 EXPORT_SYMBOL_GPL(vmf_insert_page_mkwrite);
 
-vm_fault_t vmf_insert_mixed(struct vm_area_struct *vma, unsigned long addr,
+vm_fault_t vmf_insert_mixed(struct mm_area *vma, unsigned long addr,
 		pfn_t pfn)
 {
 	return __vm_insert_mixed(vma, addr, pfn, false);
@@ -2655,7 +2655,7 @@ EXPORT_SYMBOL(vmf_insert_mixed);
  *  different entry in the mean time, we treat that as success as we assume
  *  the same entry was actually inserted.
  */
-vm_fault_t vmf_insert_mixed_mkwrite(struct vm_area_struct *vma,
+vm_fault_t vmf_insert_mixed_mkwrite(struct mm_area *vma,
 		unsigned long addr, pfn_t pfn)
 {
 	return __vm_insert_mixed(vma, addr, pfn, true);
@@ -2759,7 +2759,7 @@ static inline int remap_p4d_range(struct mm_struct *mm, pgd_t *pgd,
 	return 0;
 }
 
-static int remap_pfn_range_internal(struct vm_area_struct *vma, unsigned long addr,
+static int remap_pfn_range_internal(struct mm_area *vma, unsigned long addr,
 		unsigned long pfn, unsigned long size, pgprot_t prot)
 {
 	pgd_t *pgd;
@@ -2816,7 +2816,7 @@ static int remap_pfn_range_internal(struct vm_area_struct *vma, unsigned long ad
  * Variant of remap_pfn_range that does not call track_pfn_remap.  The caller
  * must have pre-validated the caching bits of the pgprot_t.
  */
-int remap_pfn_range_notrack(struct vm_area_struct *vma, unsigned long addr,
+int remap_pfn_range_notrack(struct mm_area *vma, unsigned long addr,
 		unsigned long pfn, unsigned long size, pgprot_t prot)
 {
 	int error = remap_pfn_range_internal(vma, addr, pfn, size, prot);
@@ -2845,7 +2845,7 @@ int remap_pfn_range_notrack(struct vm_area_struct *vma, unsigned long addr,
  *
  * Return: %0 on success, negative error code otherwise.
  */
-int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
+int remap_pfn_range(struct mm_area *vma, unsigned long addr,
 		    unsigned long pfn, unsigned long size, pgprot_t prot)
 {
 	int err;
@@ -2876,7 +2876,7 @@ EXPORT_SYMBOL(remap_pfn_range);
  *
  * Return: %0 on success, negative error code otherwise.
  */
-int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long len)
+int vm_iomap_memory(struct mm_area *vma, phys_addr_t start, unsigned long len)
 {
 	unsigned long vm_len, pfn, pages;
 
@@ -3161,7 +3161,7 @@ static inline int __wp_page_copy_user(struct page *dst, struct page *src,
 	int ret;
 	void *kaddr;
 	void __user *uaddr;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct mm_struct *mm = vma->vm_mm;
 	unsigned long addr = vmf->address;
 
@@ -3253,7 +3253,7 @@ static inline int __wp_page_copy_user(struct page *dst, struct page *src,
 	return ret;
 }
 
-static gfp_t __get_fault_gfp_mask(struct vm_area_struct *vma)
+static gfp_t __get_fault_gfp_mask(struct mm_area *vma)
 {
 	struct file *vm_file = vma->vm_file;
 
@@ -3308,7 +3308,7 @@ static vm_fault_t do_page_mkwrite(struct vm_fault *vmf, struct folio *folio)
  */
 static vm_fault_t fault_dirty_shared_page(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct address_space *mapping;
 	struct folio *folio = page_folio(vmf->page);
 	bool dirtied;
@@ -3362,7 +3362,7 @@ static vm_fault_t fault_dirty_shared_page(struct vm_fault *vmf)
 static inline void wp_page_reuse(struct vm_fault *vmf, struct folio *folio)
 	__releases(vmf->ptl)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	pte_t entry;
 
 	VM_BUG_ON(!(vmf->flags & FAULT_FLAG_WRITE));
@@ -3395,7 +3395,7 @@ static inline void wp_page_reuse(struct vm_fault *vmf, struct folio *folio)
  */
 static inline vm_fault_t vmf_can_call_fault(const struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 
 	if (vma->vm_ops->map_pages || !(vmf->flags & FAULT_FLAG_VMA_LOCK))
 		return 0;
@@ -3420,7 +3420,7 @@ static inline vm_fault_t vmf_can_call_fault(const struct vm_fault *vmf)
  */
 vm_fault_t __vmf_anon_prepare(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	vm_fault_t ret = 0;
 
 	if (likely(vma->anon_vma))
@@ -3456,7 +3456,7 @@ vm_fault_t __vmf_anon_prepare(struct vm_fault *vmf)
 static vm_fault_t wp_page_copy(struct vm_fault *vmf)
 {
 	const bool unshare = vmf->flags & FAULT_FLAG_UNSHARE;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct mm_struct *mm = vma->vm_mm;
 	struct folio *old_folio = NULL;
 	struct folio *new_folio = NULL;
@@ -3647,7 +3647,7 @@ static vm_fault_t finish_mkwrite_fault(struct vm_fault *vmf, struct folio *folio
  */
 static vm_fault_t wp_pfn_shared(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 
 	if (vma->vm_ops && vma->vm_ops->pfn_mkwrite) {
 		vm_fault_t ret;
@@ -3670,7 +3670,7 @@ static vm_fault_t wp_pfn_shared(struct vm_fault *vmf)
 static vm_fault_t wp_page_shared(struct vm_fault *vmf, struct folio *folio)
 	__releases(vmf->ptl)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	vm_fault_t ret = 0;
 
 	folio_get(folio);
@@ -3709,7 +3709,7 @@ static vm_fault_t wp_page_shared(struct vm_fault *vmf, struct folio *folio)
 
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 static bool __wp_can_reuse_large_anon_folio(struct folio *folio,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	bool exclusive = false;
 
@@ -3775,14 +3775,14 @@ static bool __wp_can_reuse_large_anon_folio(struct folio *folio,
 }
 #else /* !CONFIG_TRANSPARENT_HUGEPAGE */
 static bool __wp_can_reuse_large_anon_folio(struct folio *folio,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	BUILD_BUG();
 }
 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
 
 static bool wp_can_reuse_anon_folio(struct folio *folio,
-				    struct vm_area_struct *vma)
+				    struct mm_area *vma)
 {
 	if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE) && folio_test_large(folio))
 		return __wp_can_reuse_large_anon_folio(folio, vma);
@@ -3848,7 +3848,7 @@ static vm_fault_t do_wp_page(struct vm_fault *vmf)
 	__releases(vmf->ptl)
 {
 	const bool unshare = vmf->flags & FAULT_FLAG_UNSHARE;
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct folio *folio = NULL;
 	pte_t pte;
 
@@ -3939,7 +3939,7 @@ static vm_fault_t do_wp_page(struct vm_fault *vmf)
 	return wp_page_copy(vmf);
 }
 
-static void unmap_mapping_range_vma(struct vm_area_struct *vma,
+static void unmap_mapping_range_vma(struct mm_area *vma,
 		unsigned long start_addr, unsigned long end_addr,
 		struct zap_details *details)
 {
@@ -3951,7 +3951,7 @@ static inline void unmap_mapping_range_tree(struct rb_root_cached *root,
 					    pgoff_t last_index,
 					    struct zap_details *details)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	pgoff_t vba, vea, zba, zea;
 
 	vma_interval_tree_foreach(vma, root, first_index, last_index) {
@@ -4073,7 +4073,7 @@ EXPORT_SYMBOL(unmap_mapping_range);
 static vm_fault_t remove_device_exclusive_entry(struct vm_fault *vmf)
 {
 	struct folio *folio = page_folio(vmf->page);
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct mmu_notifier_range range;
 	vm_fault_t ret;
 
@@ -4114,7 +4114,7 @@ static vm_fault_t remove_device_exclusive_entry(struct vm_fault *vmf)
 }
 
 static inline bool should_try_to_free_swap(struct folio *folio,
-					   struct vm_area_struct *vma,
+					   struct mm_area *vma,
 					   unsigned int fault_flags)
 {
 	if (!folio_test_swapcache(folio))
@@ -4205,7 +4205,7 @@ static vm_fault_t handle_pte_marker(struct vm_fault *vmf)
 
 static struct folio *__alloc_swap_folio(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct folio *folio;
 	swp_entry_t entry;
 
@@ -4303,7 +4303,7 @@ static inline unsigned long thp_swap_suitable_orders(pgoff_t swp_offset,
 
 static struct folio *alloc_swap_folio(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	unsigned long orders;
 	struct folio *folio;
 	unsigned long addr;
@@ -4399,7 +4399,7 @@ static DECLARE_WAIT_QUEUE_HEAD(swapcache_wq);
  */
 vm_fault_t do_swap_page(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct folio *swapcache, *folio = NULL;
 	DECLARE_WAITQUEUE(wait, current);
 	struct page *page;
@@ -4859,7 +4859,7 @@ static bool pte_range_none(pte_t *pte, int nr_pages)
 
 static struct folio *alloc_anon_folio(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 	unsigned long orders;
 	struct folio *folio;
@@ -4949,7 +4949,7 @@ static struct folio *alloc_anon_folio(struct vm_fault *vmf)
  */
 static vm_fault_t do_anonymous_page(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	unsigned long addr = vmf->address;
 	struct folio *folio;
 	vm_fault_t ret = 0;
@@ -5069,7 +5069,7 @@ static vm_fault_t do_anonymous_page(struct vm_fault *vmf)
  */
 static vm_fault_t __do_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct folio *folio;
 	vm_fault_t ret;
 
@@ -5126,7 +5126,7 @@ static vm_fault_t __do_fault(struct vm_fault *vmf)
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 static void deposit_prealloc_pte(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 
 	pgtable_trans_huge_deposit(vma->vm_mm, vmf->pmd, vmf->prealloc_pte);
 	/*
@@ -5140,7 +5140,7 @@ static void deposit_prealloc_pte(struct vm_fault *vmf)
 vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page)
 {
 	struct folio *folio = page_folio(page);
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	bool write = vmf->flags & FAULT_FLAG_WRITE;
 	unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
 	pmd_t entry;
@@ -5229,7 +5229,7 @@ vm_fault_t do_set_pmd(struct vm_fault *vmf, struct page *page)
 void set_pte_range(struct vm_fault *vmf, struct folio *folio,
 		struct page *page, unsigned int nr, unsigned long addr)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	bool write = vmf->flags & FAULT_FLAG_WRITE;
 	bool prefault = !in_range(vmf->address, addr, nr * PAGE_SIZE);
 	pte_t entry;
@@ -5285,7 +5285,7 @@ static bool vmf_pte_changed(struct vm_fault *vmf)
  */
 vm_fault_t finish_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct page *page;
 	struct folio *folio;
 	vm_fault_t ret;
@@ -5528,7 +5528,7 @@ static vm_fault_t do_read_fault(struct vm_fault *vmf)
 
 static vm_fault_t do_cow_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct folio *folio;
 	vm_fault_t ret;
 
@@ -5570,7 +5570,7 @@ static vm_fault_t do_cow_fault(struct vm_fault *vmf)
 
 static vm_fault_t do_shared_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	vm_fault_t ret, tmp;
 	struct folio *folio;
 
@@ -5620,7 +5620,7 @@ static vm_fault_t do_shared_fault(struct vm_fault *vmf)
  */
 static vm_fault_t do_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct mm_struct *vm_mm = vma->vm_mm;
 	vm_fault_t ret;
 
@@ -5666,7 +5666,7 @@ int numa_migrate_check(struct folio *folio, struct vm_fault *vmf,
 		      unsigned long addr, int *flags,
 		      bool writable, int *last_cpupid)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 
 	/*
 	 * Avoid grouping on RO pages in general. RO pages shouldn't hurt as
@@ -5709,7 +5709,7 @@ int numa_migrate_check(struct folio *folio, struct vm_fault *vmf,
 	return mpol_misplaced(folio, vmf, addr);
 }
 
-static void numa_rebuild_single_mapping(struct vm_fault *vmf, struct vm_area_struct *vma,
+static void numa_rebuild_single_mapping(struct vm_fault *vmf, struct mm_area *vma,
 					unsigned long fault_addr, pte_t *fault_pte,
 					bool writable)
 {
@@ -5724,7 +5724,7 @@ static void numa_rebuild_single_mapping(struct vm_fault *vmf, struct vm_area_str
 	update_mmu_cache_range(vmf, vma, fault_addr, fault_pte, 1);
 }
 
-static void numa_rebuild_large_mapping(struct vm_fault *vmf, struct vm_area_struct *vma,
+static void numa_rebuild_large_mapping(struct vm_fault *vmf, struct mm_area *vma,
 				       struct folio *folio, pte_t fault_pte,
 				       bool ignore_writable, bool pte_write_upgrade)
 {
@@ -5765,7 +5765,7 @@ static void numa_rebuild_large_mapping(struct vm_fault *vmf, struct vm_area_stru
 
 static vm_fault_t do_numa_page(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct folio *folio = NULL;
 	int nid = NUMA_NO_NODE;
 	bool writable = false, ignore_writable = false;
@@ -5856,7 +5856,7 @@ static vm_fault_t do_numa_page(struct vm_fault *vmf)
 
 static inline vm_fault_t create_huge_pmd(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	if (vma_is_anonymous(vma))
 		return do_huge_pmd_anonymous_page(vmf);
 	if (vma->vm_ops->huge_fault)
@@ -5867,7 +5867,7 @@ static inline vm_fault_t create_huge_pmd(struct vm_fault *vmf)
 /* `inline' is required to avoid gcc 4.1.2 build error */
 static inline vm_fault_t wp_huge_pmd(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	const bool unshare = vmf->flags & FAULT_FLAG_UNSHARE;
 	vm_fault_t ret;
 
@@ -5900,7 +5900,7 @@ static vm_fault_t create_huge_pud(struct vm_fault *vmf)
 {
 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) &&			\
 	defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD)
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	/* No support for anonymous transparent PUD pages yet */
 	if (vma_is_anonymous(vma))
 		return VM_FAULT_FALLBACK;
@@ -5914,7 +5914,7 @@ static vm_fault_t wp_huge_pud(struct vm_fault *vmf, pud_t orig_pud)
 {
 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) &&			\
 	defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD)
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	vm_fault_t ret;
 
 	/* No support for anonymous transparent PUD pages yet */
@@ -6043,7 +6043,7 @@ static vm_fault_t handle_pte_fault(struct vm_fault *vmf)
  * the result, the mmap_lock is not held on exit.  See filemap_fault()
  * and __folio_lock_or_retry().
  */
-static vm_fault_t __handle_mm_fault(struct vm_area_struct *vma,
+static vm_fault_t __handle_mm_fault(struct mm_area *vma,
 		unsigned long address, unsigned int flags)
 {
 	struct vm_fault vmf = {
@@ -6208,7 +6208,7 @@ static inline void mm_account_fault(struct mm_struct *mm, struct pt_regs *regs,
 }
 
 #ifdef CONFIG_LRU_GEN
-static void lru_gen_enter_fault(struct vm_area_struct *vma)
+static void lru_gen_enter_fault(struct mm_area *vma)
 {
 	/* the LRU algorithm only applies to accesses with recency */
 	current->in_lru_fault = vma_has_recency(vma);
@@ -6219,7 +6219,7 @@ static void lru_gen_exit_fault(void)
 	current->in_lru_fault = false;
 }
 #else
-static void lru_gen_enter_fault(struct vm_area_struct *vma)
+static void lru_gen_enter_fault(struct mm_area *vma)
 {
 }
 
@@ -6228,7 +6228,7 @@ static void lru_gen_exit_fault(void)
 }
 #endif /* CONFIG_LRU_GEN */
 
-static vm_fault_t sanitize_fault_flags(struct vm_area_struct *vma,
+static vm_fault_t sanitize_fault_flags(struct mm_area *vma,
 				       unsigned int *flags)
 {
 	if (unlikely(*flags & FAULT_FLAG_UNSHARE)) {
@@ -6270,7 +6270,7 @@ static vm_fault_t sanitize_fault_flags(struct vm_area_struct *vma,
  * The mmap_lock may have been released depending on flags and our
  * return value.  See filemap_fault() and __folio_lock_or_retry().
  */
-vm_fault_t handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
+vm_fault_t handle_mm_fault(struct mm_area *vma, unsigned long address,
 			   unsigned int flags, struct pt_regs *regs)
 {
 	/* If the fault handler drops the mmap_lock, vma may be freed */
@@ -6397,10 +6397,10 @@ static inline bool upgrade_mmap_lock_carefully(struct mm_struct *mm, struct pt_r
  * We can also actually take the mm lock for writing if we
  * need to extend the vma, which helps the VM layer a lot.
  */
-struct vm_area_struct *lock_mm_and_find_vma(struct mm_struct *mm,
+struct mm_area *lock_mm_and_find_vma(struct mm_struct *mm,
 			unsigned long addr, struct pt_regs *regs)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	if (!get_mmap_lock_carefully(mm, regs))
 		return NULL;
@@ -6454,7 +6454,7 @@ struct vm_area_struct *lock_mm_and_find_vma(struct mm_struct *mm,
 #endif
 
 #ifdef CONFIG_PER_VMA_LOCK
-static inline bool __vma_enter_locked(struct vm_area_struct *vma, bool detaching)
+static inline bool __vma_enter_locked(struct mm_area *vma, bool detaching)
 {
 	unsigned int tgt_refcnt = VMA_LOCK_OFFSET;
 
@@ -6478,13 +6478,13 @@ static inline bool __vma_enter_locked(struct vm_area_struct *vma, bool detaching
 	return true;
 }
 
-static inline void __vma_exit_locked(struct vm_area_struct *vma, bool *detached)
+static inline void __vma_exit_locked(struct mm_area *vma, bool *detached)
 {
 	*detached = refcount_sub_and_test(VMA_LOCK_OFFSET, &vma->vm_refcnt);
 	rwsem_release(&vma->vmlock_dep_map, _RET_IP_);
 }
 
-void __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq)
+void __vma_start_write(struct mm_area *vma, unsigned int mm_lock_seq)
 {
 	bool locked;
 
@@ -6512,7 +6512,7 @@ void __vma_start_write(struct vm_area_struct *vma, unsigned int mm_lock_seq)
 }
 EXPORT_SYMBOL_GPL(__vma_start_write);
 
-void vma_mark_detached(struct vm_area_struct *vma)
+void vma_mark_detached(struct mm_area *vma)
 {
 	vma_assert_write_locked(vma);
 	vma_assert_attached(vma);
@@ -6541,11 +6541,11 @@ void vma_mark_detached(struct vm_area_struct *vma)
  * stable and not isolated. If the VMA is not found or is being modified the
  * function returns NULL.
  */
-struct vm_area_struct *lock_vma_under_rcu(struct mm_struct *mm,
+struct mm_area *lock_vma_under_rcu(struct mm_struct *mm,
 					  unsigned long address)
 {
 	MA_STATE(mas, &mm->mm_mt, address, address);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	rcu_read_lock();
 retry:
@@ -6675,7 +6675,7 @@ static inline void pfnmap_args_setup(struct follow_pfnmap_args *args,
 	args->special = special;
 }
 
-static inline void pfnmap_lockdep_assert(struct vm_area_struct *vma)
+static inline void pfnmap_lockdep_assert(struct mm_area *vma)
 {
 #ifdef CONFIG_LOCKDEP
 	struct file *file = vma->vm_file;
@@ -6722,7 +6722,7 @@ static inline void pfnmap_lockdep_assert(struct vm_area_struct *vma)
  */
 int follow_pfnmap_start(struct follow_pfnmap_args *args)
 {
-	struct vm_area_struct *vma = args->vma;
+	struct mm_area *vma = args->vma;
 	unsigned long address = args->address;
 	struct mm_struct *mm = vma->vm_mm;
 	spinlock_t *lock;
@@ -6825,7 +6825,7 @@ EXPORT_SYMBOL_GPL(follow_pfnmap_end);
  * iomem mapping. This callback is used by access_process_vm() when the @vma is
  * not page based.
  */
-int generic_access_phys(struct vm_area_struct *vma, unsigned long addr,
+int generic_access_phys(struct mm_area *vma, unsigned long addr,
 			void *buf, int len, int write)
 {
 	resource_size_t phys_addr;
@@ -6899,7 +6899,7 @@ static int __access_remote_vm(struct mm_struct *mm, unsigned long addr,
 	while (len) {
 		int bytes, offset;
 		void *maddr;
-		struct vm_area_struct *vma = NULL;
+		struct mm_area *vma = NULL;
 		struct page *page = get_user_page_vma_remote(mm, addr,
 							     gup_flags, &vma);
 
@@ -7024,7 +7024,7 @@ static int __copy_remote_vm_str(struct mm_struct *mm, unsigned long addr,
 		int bytes, offset, retval;
 		void *maddr;
 		struct page *page;
-		struct vm_area_struct *vma = NULL;
+		struct mm_area *vma = NULL;
 
 		page = get_user_page_vma_remote(mm, addr, gup_flags, &vma);
 		if (IS_ERR(page)) {
@@ -7120,7 +7120,7 @@ EXPORT_SYMBOL_GPL(copy_remote_vm_str);
 void print_vma_addr(char *prefix, unsigned long ip)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	/*
 	 * we might be running from an atomic context so we cannot sleep
@@ -7251,7 +7251,7 @@ void folio_zero_user(struct folio *folio, unsigned long addr_hint)
 
 static int copy_user_gigantic_page(struct folio *dst, struct folio *src,
 				   unsigned long addr_hint,
-				   struct vm_area_struct *vma,
+				   struct mm_area *vma,
 				   unsigned int nr_pages)
 {
 	unsigned long addr = ALIGN_DOWN(addr_hint, folio_size(dst));
@@ -7274,7 +7274,7 @@ static int copy_user_gigantic_page(struct folio *dst, struct folio *src,
 struct copy_subpage_arg {
 	struct folio *dst;
 	struct folio *src;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 };
 
 static int copy_subpage(unsigned long addr, int idx, void *arg)
@@ -7289,7 +7289,7 @@ static int copy_subpage(unsigned long addr, int idx, void *arg)
 }
 
 int copy_user_large_folio(struct folio *dst, struct folio *src,
-			  unsigned long addr_hint, struct vm_area_struct *vma)
+			  unsigned long addr_hint, struct mm_area *vma)
 {
 	unsigned int nr_pages = folio_nr_pages(dst);
 	struct copy_subpage_arg arg = {
@@ -7364,13 +7364,13 @@ void ptlock_free(struct ptdesc *ptdesc)
 }
 #endif
 
-void vma_pgtable_walk_begin(struct vm_area_struct *vma)
+void vma_pgtable_walk_begin(struct mm_area *vma)
 {
 	if (is_vm_hugetlb_page(vma))
 		hugetlb_vma_lock_read(vma);
 }
 
-void vma_pgtable_walk_end(struct vm_area_struct *vma)
+void vma_pgtable_walk_end(struct mm_area *vma)
 {
 	if (is_vm_hugetlb_page(vma))
 		hugetlb_vma_unlock_read(vma);
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index b28a1e6ae096..3403a4805d17 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -445,7 +445,7 @@ void mpol_rebind_task(struct task_struct *tsk, const nodemask_t *new)
  */
 void mpol_rebind_mm(struct mm_struct *mm, nodemask_t *new)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	mmap_write_lock(mm);
@@ -511,7 +511,7 @@ struct queue_pages {
 	nodemask_t *nmask;
 	unsigned long start;
 	unsigned long end;
-	struct vm_area_struct *first;
+	struct mm_area *first;
 	struct folio *large;		/* note last large folio encountered */
 	long nr_failed;			/* could not be isolated at this time */
 };
@@ -566,7 +566,7 @@ static void queue_folios_pmd(pmd_t *pmd, struct mm_walk *walk)
 static int queue_folios_pte_range(pmd_t *pmd, unsigned long addr,
 			unsigned long end, struct mm_walk *walk)
 {
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	struct folio *folio;
 	struct queue_pages *qp = walk->private;
 	unsigned long flags = qp->flags;
@@ -698,7 +698,7 @@ static int queue_folios_hugetlb(pte_t *pte, unsigned long hmask,
  * an architecture makes a different choice, it will need further
  * changes to the core.
  */
-unsigned long change_prot_numa(struct vm_area_struct *vma,
+unsigned long change_prot_numa(struct mm_area *vma,
 			unsigned long addr, unsigned long end)
 {
 	struct mmu_gather tlb;
@@ -721,7 +721,7 @@ unsigned long change_prot_numa(struct vm_area_struct *vma,
 static int queue_pages_test_walk(unsigned long start, unsigned long end,
 				struct mm_walk *walk)
 {
-	struct vm_area_struct *next, *vma = walk->vma;
+	struct mm_area *next, *vma = walk->vma;
 	struct queue_pages *qp = walk->private;
 	unsigned long flags = qp->flags;
 
@@ -817,7 +817,7 @@ queue_pages_range(struct mm_struct *mm, unsigned long start, unsigned long end,
  * Apply policy to a single VMA
  * This must be called with the mmap_lock held for writing.
  */
-static int vma_replace_policy(struct vm_area_struct *vma,
+static int vma_replace_policy(struct mm_area *vma,
 				struct mempolicy *pol)
 {
 	int err;
@@ -847,8 +847,8 @@ static int vma_replace_policy(struct vm_area_struct *vma,
 }
 
 /* Split or merge the VMA (if required) and apply the new policy */
-static int mbind_range(struct vma_iterator *vmi, struct vm_area_struct *vma,
-		struct vm_area_struct **prev, unsigned long start,
+static int mbind_range(struct vma_iterator *vmi, struct mm_area *vma,
+		struct mm_area **prev, unsigned long start,
 		unsigned long end, struct mempolicy *new_pol)
 {
 	unsigned long vmstart, vmend;
@@ -960,7 +960,7 @@ static long do_get_mempolicy(int *policy, nodemask_t *nmask,
 {
 	int err;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma = NULL;
+	struct mm_area *vma = NULL;
 	struct mempolicy *pol = current->mempolicy, *pol_refcount = NULL;
 
 	if (flags &
@@ -1094,7 +1094,7 @@ static long migrate_to_node(struct mm_struct *mm, int source, int dest,
 			    int flags)
 {
 	nodemask_t nmask;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	LIST_HEAD(pagelist);
 	long nr_failed;
 	long err = 0;
@@ -1299,7 +1299,7 @@ static long do_mbind(unsigned long start, unsigned long len,
 		     nodemask_t *nmask, unsigned long flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma, *prev;
+	struct mm_area *vma, *prev;
 	struct vma_iterator vmi;
 	struct migration_mpol mmpol;
 	struct mempolicy *new;
@@ -1572,7 +1572,7 @@ SYSCALL_DEFINE4(set_mempolicy_home_node, unsigned long, start, unsigned long, le
 		unsigned long, home_node, unsigned long, flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma, *prev;
+	struct mm_area *vma, *prev;
 	struct mempolicy *new, *old;
 	unsigned long end;
 	int err = -ENOENT;
@@ -1799,7 +1799,7 @@ SYSCALL_DEFINE5(get_mempolicy, int __user *, policy,
 	return kernel_get_mempolicy(policy, nmask, maxnode, addr, flags);
 }
 
-bool vma_migratable(struct vm_area_struct *vma)
+bool vma_migratable(struct mm_area *vma)
 {
 	if (vma->vm_flags & (VM_IO | VM_PFNMAP))
 		return false;
@@ -1827,7 +1827,7 @@ bool vma_migratable(struct vm_area_struct *vma)
 	return true;
 }
 
-struct mempolicy *__get_vma_policy(struct vm_area_struct *vma,
+struct mempolicy *__get_vma_policy(struct mm_area *vma,
 				   unsigned long addr, pgoff_t *ilx)
 {
 	*ilx = 0;
@@ -1850,7 +1850,7 @@ struct mempolicy *__get_vma_policy(struct vm_area_struct *vma,
  * freeing by another task.  It is the caller's responsibility to free the
  * extra reference for shared policies.
  */
-struct mempolicy *get_vma_policy(struct vm_area_struct *vma,
+struct mempolicy *get_vma_policy(struct mm_area *vma,
 				 unsigned long addr, int order, pgoff_t *ilx)
 {
 	struct mempolicy *pol;
@@ -1866,7 +1866,7 @@ struct mempolicy *get_vma_policy(struct vm_area_struct *vma,
 	return pol;
 }
 
-bool vma_policy_mof(struct vm_area_struct *vma)
+bool vma_policy_mof(struct mm_area *vma)
 {
 	struct mempolicy *pol;
 
@@ -2135,7 +2135,7 @@ static nodemask_t *policy_nodemask(gfp_t gfp, struct mempolicy *pol,
  * If the effective policy is 'bind' or 'prefer-many', returns a pointer
  * to the mempolicy's @nodemask for filtering the zonelist.
  */
-int huge_node(struct vm_area_struct *vma, unsigned long addr, gfp_t gfp_flags,
+int huge_node(struct mm_area *vma, unsigned long addr, gfp_t gfp_flags,
 		struct mempolicy **mpol, nodemask_t **nodemask)
 {
 	pgoff_t ilx;
@@ -2341,7 +2341,7 @@ struct folio *folio_alloc_mpol_noprof(gfp_t gfp, unsigned int order,
  *
  * Return: The folio on success or NULL if allocation fails.
  */
-struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, struct vm_area_struct *vma,
+struct folio *vma_alloc_folio_noprof(gfp_t gfp, int order, struct mm_area *vma,
 		unsigned long addr)
 {
 	struct mempolicy *pol;
@@ -2607,7 +2607,7 @@ unsigned long alloc_pages_bulk_mempolicy_noprof(gfp_t gfp,
 				       nr_pages, page_array);
 }
 
-int vma_dup_policy(struct vm_area_struct *src, struct vm_area_struct *dst)
+int vma_dup_policy(struct mm_area *src, struct mm_area *dst)
 {
 	struct mempolicy *pol = mpol_dup(src->vm_policy);
 
@@ -2795,7 +2795,7 @@ int mpol_misplaced(struct folio *folio, struct vm_fault *vmf,
 	pgoff_t ilx;
 	struct zoneref *z;
 	int curnid = folio_nid(folio);
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	int thiscpu = raw_smp_processor_id();
 	int thisnid = numa_node_id();
 	int polnid = NUMA_NO_NODE;
@@ -3054,7 +3054,7 @@ void mpol_shared_policy_init(struct shared_policy *sp, struct mempolicy *mpol)
 }
 
 int mpol_set_shared_policy(struct shared_policy *sp,
-			struct vm_area_struct *vma, struct mempolicy *pol)
+			struct mm_area *vma, struct mempolicy *pol)
 {
 	int err;
 	struct sp_node *new = NULL;
diff --git a/mm/migrate.c b/mm/migrate.c
index f3ee6d8d5e2e..7909e4ae797c 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -237,7 +237,7 @@ struct rmap_walk_arg {
  * Restore a potential migration pte to a working pte entry
  */
 static bool remove_migration_pte(struct folio *folio,
-		struct vm_area_struct *vma, unsigned long addr, void *arg)
+		struct mm_area *vma, unsigned long addr, void *arg)
 {
 	struct rmap_walk_arg *rmap_walk_arg = arg;
 	DEFINE_FOLIO_VMA_WALK(pvmw, rmap_walk_arg->folio, vma, addr, PVMW_SYNC | PVMW_MIGRATION);
@@ -405,7 +405,7 @@ void migration_entry_wait(struct mm_struct *mm, pmd_t *pmd,
  *
  * This function will release the vma lock before returning.
  */
-void migration_entry_wait_huge(struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)
+void migration_entry_wait_huge(struct mm_area *vma, unsigned long addr, pte_t *ptep)
 {
 	spinlock_t *ptl = huge_pte_lockptr(hstate_vma(vma), vma->vm_mm, ptep);
 	pte_t pte;
@@ -2254,7 +2254,7 @@ static int __add_folio_for_migration(struct folio *folio, int node,
 static int add_folio_for_migration(struct mm_struct *mm, const void __user *p,
 		int node, struct list_head *pagelist, bool migrate_all)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct folio_walk fw;
 	struct folio *folio;
 	unsigned long addr;
@@ -2423,7 +2423,7 @@ static void do_pages_stat_array(struct mm_struct *mm, unsigned long nr_pages,
 
 	for (i = 0; i < nr_pages; i++) {
 		unsigned long addr = (unsigned long)(*pages);
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 		struct folio_walk fw;
 		struct folio *folio;
 		int err = -EFAULT;
@@ -2640,7 +2640,7 @@ static struct folio *alloc_misplaced_dst_folio(struct folio *src,
  * permitted. Must be called with the PTL still held.
  */
 int migrate_misplaced_folio_prepare(struct folio *folio,
-		struct vm_area_struct *vma, int node)
+		struct mm_area *vma, int node)
 {
 	int nr_pages = folio_nr_pages(folio);
 	pg_data_t *pgdat = NODE_DATA(node);
diff --git a/mm/migrate_device.c b/mm/migrate_device.c
index 3158afe7eb23..96786d64edd6 100644
--- a/mm/migrate_device.c
+++ b/mm/migrate_device.c
@@ -62,7 +62,7 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp,
 	struct migrate_vma *migrate = walk->private;
 	struct folio *fault_folio = migrate->fault_page ?
 		page_folio(migrate->fault_page) : NULL;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	struct mm_struct *mm = vma->vm_mm;
 	unsigned long addr = start, unmapped = 0;
 	spinlock_t *ptl;
@@ -589,7 +589,7 @@ static void migrate_vma_insert_page(struct migrate_vma *migrate,
 				    unsigned long *src)
 {
 	struct folio *folio = page_folio(page);
-	struct vm_area_struct *vma = migrate->vma;
+	struct mm_area *vma = migrate->vma;
 	struct mm_struct *mm = vma->vm_mm;
 	bool flush = false;
 	spinlock_t *ptl;
diff --git a/mm/mincore.c b/mm/mincore.c
index 832f29f46767..6b53d9361ec7 100644
--- a/mm/mincore.c
+++ b/mm/mincore.c
@@ -70,7 +70,7 @@ static unsigned char mincore_page(struct address_space *mapping, pgoff_t index)
 }
 
 static int __mincore_unmapped_range(unsigned long addr, unsigned long end,
-				struct vm_area_struct *vma, unsigned char *vec)
+				struct mm_area *vma, unsigned char *vec)
 {
 	unsigned long nr = (end - addr) >> PAGE_SHIFT;
 	int i;
@@ -101,7 +101,7 @@ static int mincore_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
 			struct mm_walk *walk)
 {
 	spinlock_t *ptl;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	pte_t *ptep;
 	unsigned char *vec = walk->private;
 	int nr = (end - addr) >> PAGE_SHIFT;
@@ -155,7 +155,7 @@ static int mincore_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
 	return 0;
 }
 
-static inline bool can_do_mincore(struct vm_area_struct *vma)
+static inline bool can_do_mincore(struct mm_area *vma)
 {
 	if (vma_is_anonymous(vma))
 		return true;
@@ -186,7 +186,7 @@ static const struct mm_walk_ops mincore_walk_ops = {
  */
 static long do_mincore(unsigned long addr, unsigned long pages, unsigned char *vec)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long end;
 	int err;
 
diff --git a/mm/mlock.c b/mm/mlock.c
index 3cb72b579ffd..8c13cce0d0cb 100644
--- a/mm/mlock.c
+++ b/mm/mlock.c
@@ -319,7 +319,7 @@ static inline unsigned int folio_mlock_step(struct folio *folio,
 }
 
 static inline bool allow_mlock_munlock(struct folio *folio,
-		struct vm_area_struct *vma, unsigned long start,
+		struct mm_area *vma, unsigned long start,
 		unsigned long end, unsigned int step)
 {
 	/*
@@ -353,7 +353,7 @@ static int mlock_pte_range(pmd_t *pmd, unsigned long addr,
 			   unsigned long end, struct mm_walk *walk)
 
 {
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	spinlock_t *ptl;
 	pte_t *start_pte, *pte;
 	pte_t ptent;
@@ -422,7 +422,7 @@ static int mlock_pte_range(pmd_t *pmd, unsigned long addr,
  * Called for mlock(), mlock2() and mlockall(), to set @vma VM_LOCKED;
  * called for munlock() and munlockall(), to clear VM_LOCKED from @vma.
  */
-static void mlock_vma_pages_range(struct vm_area_struct *vma,
+static void mlock_vma_pages_range(struct mm_area *vma,
 	unsigned long start, unsigned long end, vm_flags_t newflags)
 {
 	static const struct mm_walk_ops mlock_walk_ops = {
@@ -465,8 +465,8 @@ static void mlock_vma_pages_range(struct vm_area_struct *vma,
  *
  * For vmas that pass the filters, merge/split as appropriate.
  */
-static int mlock_fixup(struct vma_iterator *vmi, struct vm_area_struct *vma,
-	       struct vm_area_struct **prev, unsigned long start,
+static int mlock_fixup(struct vma_iterator *vmi, struct mm_area *vma,
+	       struct mm_area **prev, unsigned long start,
 	       unsigned long end, vm_flags_t newflags)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -517,7 +517,7 @@ static int apply_vma_lock_flags(unsigned long start, size_t len,
 				vm_flags_t flags)
 {
 	unsigned long nstart, end, tmp;
-	struct vm_area_struct *vma, *prev;
+	struct mm_area *vma, *prev;
 	VMA_ITERATOR(vmi, current->mm, start);
 
 	VM_BUG_ON(offset_in_page(start));
@@ -573,7 +573,7 @@ static int apply_vma_lock_flags(unsigned long start, size_t len,
 static unsigned long count_mm_mlocked_page_nr(struct mm_struct *mm,
 		unsigned long start, size_t len)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long count = 0;
 	unsigned long end;
 	VMA_ITERATOR(vmi, mm, start);
@@ -706,7 +706,7 @@ SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len)
 static int apply_mlockall_flags(int flags)
 {
 	VMA_ITERATOR(vmi, current->mm, 0);
-	struct vm_area_struct *vma, *prev = NULL;
+	struct mm_area *vma, *prev = NULL;
 	vm_flags_t to_add = 0;
 
 	current->mm->def_flags &= ~VM_LOCKED_MASK;
diff --git a/mm/mmap.c b/mm/mmap.c
index bd210aaf7ebd..d7d95a6f343d 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -78,7 +78,7 @@ static bool ignore_rlimit_data;
 core_param(ignore_rlimit_data, ignore_rlimit_data, bool, 0644);
 
 /* Update vma->vm_page_prot to reflect vma->vm_flags. */
-void vma_set_page_prot(struct vm_area_struct *vma)
+void vma_set_page_prot(struct mm_area *vma)
 {
 	unsigned long vm_flags = vma->vm_flags;
 	pgprot_t vm_page_prot;
@@ -116,7 +116,7 @@ SYSCALL_DEFINE1(brk, unsigned long, brk)
 {
 	unsigned long newbrk, oldbrk, origbrk;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *brkvma, *next = NULL;
+	struct mm_area *brkvma, *next = NULL;
 	unsigned long min_brk;
 	bool populate = false;
 	LIST_HEAD(uf);
@@ -693,7 +693,7 @@ generic_get_unmapped_area(struct file *filp, unsigned long addr,
 			  unsigned long flags, vm_flags_t vm_flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma, *prev;
+	struct mm_area *vma, *prev;
 	struct vm_unmapped_area_info info = {};
 	const unsigned long mmap_end = arch_get_mmap_end(addr, len, flags);
 
@@ -741,7 +741,7 @@ generic_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
 				  unsigned long len, unsigned long pgoff,
 				  unsigned long flags, vm_flags_t vm_flags)
 {
-	struct vm_area_struct *vma, *prev;
+	struct mm_area *vma, *prev;
 	struct mm_struct *mm = current->mm;
 	struct vm_unmapped_area_info info = {};
 	const unsigned long mmap_end = arch_get_mmap_end(addr, len, flags);
@@ -886,7 +886,7 @@ EXPORT_SYMBOL(mm_get_unmapped_area);
  * Returns: The first VMA within the provided range, %NULL otherwise.  Assumes
  * start_addr < end_addr.
  */
-struct vm_area_struct *find_vma_intersection(struct mm_struct *mm,
+struct mm_area *find_vma_intersection(struct mm_struct *mm,
 					     unsigned long start_addr,
 					     unsigned long end_addr)
 {
@@ -905,7 +905,7 @@ EXPORT_SYMBOL(find_vma_intersection);
  * Returns: The VMA associated with addr, or the next VMA.
  * May return %NULL in the case of no VMA at addr or above.
  */
-struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
+struct mm_area *find_vma(struct mm_struct *mm, unsigned long addr)
 {
 	unsigned long index = addr;
 
@@ -927,11 +927,11 @@ EXPORT_SYMBOL(find_vma);
  * Returns: The VMA associated with @addr, or the next vma.
  * May return %NULL in the case of no vma at addr or above.
  */
-struct vm_area_struct *
+struct mm_area *
 find_vma_prev(struct mm_struct *mm, unsigned long addr,
-			struct vm_area_struct **pprev)
+			struct mm_area **pprev)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, addr);
 
 	vma = vma_iter_load(&vmi);
@@ -958,14 +958,14 @@ static int __init cmdline_parse_stack_guard_gap(char *p)
 __setup("stack_guard_gap=", cmdline_parse_stack_guard_gap);
 
 #ifdef CONFIG_STACK_GROWSUP
-int expand_stack_locked(struct vm_area_struct *vma, unsigned long address)
+int expand_stack_locked(struct mm_area *vma, unsigned long address)
 {
 	return expand_upwards(vma, address);
 }
 
-struct vm_area_struct *find_extend_vma_locked(struct mm_struct *mm, unsigned long addr)
+struct mm_area *find_extend_vma_locked(struct mm_struct *mm, unsigned long addr)
 {
-	struct vm_area_struct *vma, *prev;
+	struct mm_area *vma, *prev;
 
 	addr &= PAGE_MASK;
 	vma = find_vma_prev(mm, addr, &prev);
@@ -980,14 +980,14 @@ struct vm_area_struct *find_extend_vma_locked(struct mm_struct *mm, unsigned lon
 	return prev;
 }
 #else
-int expand_stack_locked(struct vm_area_struct *vma, unsigned long address)
+int expand_stack_locked(struct mm_area *vma, unsigned long address)
 {
 	return expand_downwards(vma, address);
 }
 
-struct vm_area_struct *find_extend_vma_locked(struct mm_struct *mm, unsigned long addr)
+struct mm_area *find_extend_vma_locked(struct mm_struct *mm, unsigned long addr)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long start;
 
 	addr &= PAGE_MASK;
@@ -1028,9 +1028,9 @@ struct vm_area_struct *find_extend_vma_locked(struct mm_struct *mm, unsigned lon
  * If no vma is found or it can't be expanded, it returns NULL and has
  * dropped the lock.
  */
-struct vm_area_struct *expand_stack(struct mm_struct *mm, unsigned long addr)
+struct mm_area *expand_stack(struct mm_struct *mm, unsigned long addr)
 {
-	struct vm_area_struct *vma, *prev;
+	struct mm_area *vma, *prev;
 
 	mmap_read_unlock(mm);
 	if (mmap_write_lock_killable(mm))
@@ -1093,7 +1093,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
 {
 
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long populate = 0;
 	unsigned long ret = -EINVAL;
 	struct file *file;
@@ -1172,7 +1172,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
 
 	if (start + size > vma->vm_end) {
 		VMA_ITERATOR(vmi, mm, vma->vm_end);
-		struct vm_area_struct *next, *prev = vma;
+		struct mm_area *next, *prev = vma;
 
 		for_each_vma_range(vmi, next, start + size) {
 			/* hole between vmas ? */
@@ -1210,7 +1210,7 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
 int vm_brk_flags(unsigned long addr, unsigned long request, unsigned long flags)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma = NULL;
+	struct mm_area *vma = NULL;
 	unsigned long len;
 	int ret;
 	bool populate;
@@ -1258,7 +1258,7 @@ EXPORT_SYMBOL(vm_brk_flags);
 void exit_mmap(struct mm_struct *mm)
 {
 	struct mmu_gather tlb;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long nr_accounted = 0;
 	VMA_ITERATOR(vmi, mm, 0);
 	int count = 0;
@@ -1325,7 +1325,7 @@ void exit_mmap(struct mm_struct *mm)
  * and into the inode's i_mmap tree.  If vm_file is non-NULL
  * then i_mmap_rwsem is taken here.
  */
-int insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vma)
+int insert_vm_struct(struct mm_struct *mm, struct mm_area *vma)
 {
 	unsigned long charged = vma_pages(vma);
 
@@ -1411,7 +1411,7 @@ static vm_fault_t special_mapping_fault(struct vm_fault *vmf);
  *
  * Having a close hook prevents vma merging regardless of flags.
  */
-static void special_mapping_close(struct vm_area_struct *vma)
+static void special_mapping_close(struct mm_area *vma)
 {
 	const struct vm_special_mapping *sm = vma->vm_private_data;
 
@@ -1419,12 +1419,12 @@ static void special_mapping_close(struct vm_area_struct *vma)
 		sm->close(sm, vma);
 }
 
-static const char *special_mapping_name(struct vm_area_struct *vma)
+static const char *special_mapping_name(struct mm_area *vma)
 {
 	return ((struct vm_special_mapping *)vma->vm_private_data)->name;
 }
 
-static int special_mapping_mremap(struct vm_area_struct *new_vma)
+static int special_mapping_mremap(struct mm_area *new_vma)
 {
 	struct vm_special_mapping *sm = new_vma->vm_private_data;
 
@@ -1437,7 +1437,7 @@ static int special_mapping_mremap(struct vm_area_struct *new_vma)
 	return 0;
 }
 
-static int special_mapping_split(struct vm_area_struct *vma, unsigned long addr)
+static int special_mapping_split(struct mm_area *vma, unsigned long addr)
 {
 	/*
 	 * Forbid splitting special mappings - kernel has expectations over
@@ -1460,7 +1460,7 @@ static const struct vm_operations_struct special_mapping_vmops = {
 
 static vm_fault_t special_mapping_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	pgoff_t pgoff;
 	struct page **pages;
 	struct vm_special_mapping *sm = vma->vm_private_data;
@@ -1483,14 +1483,14 @@ static vm_fault_t special_mapping_fault(struct vm_fault *vmf)
 	return VM_FAULT_SIGBUS;
 }
 
-static struct vm_area_struct *__install_special_mapping(
+static struct mm_area *__install_special_mapping(
 	struct mm_struct *mm,
 	unsigned long addr, unsigned long len,
 	unsigned long vm_flags, void *priv,
 	const struct vm_operations_struct *ops)
 {
 	int ret;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	vma = vm_area_alloc(mm);
 	if (unlikely(vma == NULL))
@@ -1519,7 +1519,7 @@ static struct vm_area_struct *__install_special_mapping(
 	return ERR_PTR(ret);
 }
 
-bool vma_is_special_mapping(const struct vm_area_struct *vma,
+bool vma_is_special_mapping(const struct mm_area *vma,
 	const struct vm_special_mapping *sm)
 {
 	return vma->vm_private_data == sm &&
@@ -1535,7 +1535,7 @@ bool vma_is_special_mapping(const struct vm_area_struct *vma,
  * The array pointer and the pages it points to are assumed to stay alive
  * for as long as this mapping might exist.
  */
-struct vm_area_struct *_install_special_mapping(
+struct mm_area *_install_special_mapping(
 	struct mm_struct *mm,
 	unsigned long addr, unsigned long len,
 	unsigned long vm_flags, const struct vm_special_mapping *spec)
@@ -1725,7 +1725,7 @@ subsys_initcall(init_reserve_notifier);
  * This function is almost certainly NOT what you want for anything other than
  * early executable temporary stack relocation.
  */
-int relocate_vma_down(struct vm_area_struct *vma, unsigned long shift)
+int relocate_vma_down(struct mm_area *vma, unsigned long shift)
 {
 	/*
 	 * The process proceeds as follows:
@@ -1746,7 +1746,7 @@ int relocate_vma_down(struct vm_area_struct *vma, unsigned long shift)
 	unsigned long new_end = old_end - shift;
 	VMA_ITERATOR(vmi, mm, new_start);
 	VMG_STATE(vmg, mm, &vmi, new_start, old_end, 0, vma->vm_pgoff);
-	struct vm_area_struct *next;
+	struct mm_area *next;
 	struct mmu_gather tlb;
 	PAGETABLE_MOVE(pmc, vma, vma, old_start, new_start, length);
 
@@ -1824,7 +1824,7 @@ int relocate_vma_down(struct vm_area_struct *vma, unsigned long shift)
  * before downgrading it.
  */
 bool mmap_read_lock_maybe_expand(struct mm_struct *mm,
-				 struct vm_area_struct *new_vma,
+				 struct mm_area *new_vma,
 				 unsigned long addr, bool write)
 {
 	if (!write || addr >= new_vma->vm_start) {
@@ -1845,7 +1845,7 @@ bool mmap_read_lock_maybe_expand(struct mm_struct *mm,
 	return true;
 }
 #else
-bool mmap_read_lock_maybe_expand(struct mm_struct *mm, struct vm_area_struct *vma,
+bool mmap_read_lock_maybe_expand(struct mm_struct *mm, struct mm_area *vma,
 				 unsigned long addr, bool write)
 {
 	return false;
diff --git a/mm/mmu_gather.c b/mm/mmu_gather.c
index db7ba4a725d6..c94257a65e5b 100644
--- a/mm/mmu_gather.c
+++ b/mm/mmu_gather.c
@@ -48,7 +48,7 @@ static bool tlb_next_batch(struct mmu_gather *tlb)
 }
 
 #ifdef CONFIG_SMP
-static void tlb_flush_rmap_batch(struct mmu_gather_batch *batch, struct vm_area_struct *vma)
+static void tlb_flush_rmap_batch(struct mmu_gather_batch *batch, struct mm_area *vma)
 {
 	struct encoded_page **pages = batch->encoded_pages;
 
@@ -79,7 +79,7 @@ static void tlb_flush_rmap_batch(struct mmu_gather_batch *batch, struct vm_area_
  * we only need to walk through the current active batch and the
  * original local one.
  */
-void tlb_flush_rmaps(struct mmu_gather *tlb, struct vm_area_struct *vma)
+void tlb_flush_rmaps(struct mmu_gather *tlb, struct mm_area *vma)
 {
 	if (!tlb->delayed_rmap)
 		return;
diff --git a/mm/mprotect.c b/mm/mprotect.c
index 62c1f7945741..2f1f44d80639 100644
--- a/mm/mprotect.c
+++ b/mm/mprotect.c
@@ -40,7 +40,7 @@
 
 #include "internal.h"
 
-bool can_change_pte_writable(struct vm_area_struct *vma, unsigned long addr,
+bool can_change_pte_writable(struct mm_area *vma, unsigned long addr,
 			     pte_t pte)
 {
 	struct page *page;
@@ -84,7 +84,7 @@ bool can_change_pte_writable(struct vm_area_struct *vma, unsigned long addr,
 }
 
 static long change_pte_range(struct mmu_gather *tlb,
-		struct vm_area_struct *vma, pmd_t *pmd, unsigned long addr,
+		struct mm_area *vma, pmd_t *pmd, unsigned long addr,
 		unsigned long end, pgprot_t newprot, unsigned long cp_flags)
 {
 	pte_t *pte, oldpte;
@@ -292,7 +292,7 @@ static long change_pte_range(struct mmu_gather *tlb,
  * protection procedure, false otherwise.
  */
 static inline bool
-pgtable_split_needed(struct vm_area_struct *vma, unsigned long cp_flags)
+pgtable_split_needed(struct mm_area *vma, unsigned long cp_flags)
 {
 	/*
 	 * pte markers only resides in pte level, if we need pte markers,
@@ -308,7 +308,7 @@ pgtable_split_needed(struct vm_area_struct *vma, unsigned long cp_flags)
  * procedure, false otherwise
  */
 static inline bool
-pgtable_populate_needed(struct vm_area_struct *vma, unsigned long cp_flags)
+pgtable_populate_needed(struct mm_area *vma, unsigned long cp_flags)
 {
 	/* If not within ioctl(UFFDIO_WRITEPROTECT), then don't bother */
 	if (!(cp_flags & MM_CP_UFFD_WP))
@@ -351,7 +351,7 @@ pgtable_populate_needed(struct vm_area_struct *vma, unsigned long cp_flags)
 	})
 
 static inline long change_pmd_range(struct mmu_gather *tlb,
-		struct vm_area_struct *vma, pud_t *pud, unsigned long addr,
+		struct mm_area *vma, pud_t *pud, unsigned long addr,
 		unsigned long end, pgprot_t newprot, unsigned long cp_flags)
 {
 	pmd_t *pmd;
@@ -421,7 +421,7 @@ static inline long change_pmd_range(struct mmu_gather *tlb,
 }
 
 static inline long change_pud_range(struct mmu_gather *tlb,
-		struct vm_area_struct *vma, p4d_t *p4d, unsigned long addr,
+		struct mm_area *vma, p4d_t *p4d, unsigned long addr,
 		unsigned long end, pgprot_t newprot, unsigned long cp_flags)
 {
 	struct mmu_notifier_range range;
@@ -480,7 +480,7 @@ static inline long change_pud_range(struct mmu_gather *tlb,
 }
 
 static inline long change_p4d_range(struct mmu_gather *tlb,
-		struct vm_area_struct *vma, pgd_t *pgd, unsigned long addr,
+		struct mm_area *vma, pgd_t *pgd, unsigned long addr,
 		unsigned long end, pgprot_t newprot, unsigned long cp_flags)
 {
 	p4d_t *p4d;
@@ -503,7 +503,7 @@ static inline long change_p4d_range(struct mmu_gather *tlb,
 }
 
 static long change_protection_range(struct mmu_gather *tlb,
-		struct vm_area_struct *vma, unsigned long addr,
+		struct mm_area *vma, unsigned long addr,
 		unsigned long end, pgprot_t newprot, unsigned long cp_flags)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -533,7 +533,7 @@ static long change_protection_range(struct mmu_gather *tlb,
 }
 
 long change_protection(struct mmu_gather *tlb,
-		       struct vm_area_struct *vma, unsigned long start,
+		       struct mm_area *vma, unsigned long start,
 		       unsigned long end, unsigned long cp_flags)
 {
 	pgprot_t newprot = vma->vm_page_prot;
@@ -595,7 +595,7 @@ static const struct mm_walk_ops prot_none_walk_ops = {
 
 int
 mprotect_fixup(struct vma_iterator *vmi, struct mmu_gather *tlb,
-	       struct vm_area_struct *vma, struct vm_area_struct **pprev,
+	       struct mm_area *vma, struct mm_area **pprev,
 	       unsigned long start, unsigned long end, unsigned long newflags)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -704,7 +704,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len,
 		unsigned long prot, int pkey)
 {
 	unsigned long nstart, end, tmp, reqprot;
-	struct vm_area_struct *vma, *prev;
+	struct mm_area *vma, *prev;
 	int error;
 	const int grows = prot & (PROT_GROWSDOWN|PROT_GROWSUP);
 	const bool rier = (current->personality & READ_IMPLIES_EXEC) &&
diff --git a/mm/mremap.c b/mm/mremap.c
index 0865387531ed..2634b9f85423 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -61,7 +61,7 @@ struct vma_remap_struct {
 	struct list_head *uf_unmap;
 
 	/* VMA state, determined in do_mremap(). */
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	/* Internal state, determined in do_mremap(). */
 	unsigned long delta;		/* Absolute delta of old_len,new_len. */
@@ -139,7 +139,7 @@ static pmd_t *alloc_new_pmd(struct mm_struct *mm, unsigned long addr)
 	return pmd;
 }
 
-static void take_rmap_locks(struct vm_area_struct *vma)
+static void take_rmap_locks(struct mm_area *vma)
 {
 	if (vma->vm_file)
 		i_mmap_lock_write(vma->vm_file->f_mapping);
@@ -147,7 +147,7 @@ static void take_rmap_locks(struct vm_area_struct *vma)
 		anon_vma_lock_write(vma->anon_vma);
 }
 
-static void drop_rmap_locks(struct vm_area_struct *vma)
+static void drop_rmap_locks(struct mm_area *vma)
 {
 	if (vma->anon_vma)
 		anon_vma_unlock_write(vma->anon_vma);
@@ -173,7 +173,7 @@ static pte_t move_soft_dirty_pte(pte_t pte)
 static int move_ptes(struct pagetable_move_control *pmc,
 		unsigned long extent, pmd_t *old_pmd, pmd_t *new_pmd)
 {
-	struct vm_area_struct *vma = pmc->old;
+	struct mm_area *vma = pmc->old;
 	bool need_clear_uffd_wp = vma_has_uffd_without_event_remap(vma);
 	struct mm_struct *mm = vma->vm_mm;
 	pte_t *old_pte, *new_pte, pte;
@@ -297,7 +297,7 @@ static bool move_normal_pmd(struct pagetable_move_control *pmc,
 			pmd_t *old_pmd, pmd_t *new_pmd)
 {
 	spinlock_t *old_ptl, *new_ptl;
-	struct vm_area_struct *vma = pmc->old;
+	struct mm_area *vma = pmc->old;
 	struct mm_struct *mm = vma->vm_mm;
 	bool res = false;
 	pmd_t pmd;
@@ -381,7 +381,7 @@ static bool move_normal_pud(struct pagetable_move_control *pmc,
 		pud_t *old_pud, pud_t *new_pud)
 {
 	spinlock_t *old_ptl, *new_ptl;
-	struct vm_area_struct *vma = pmc->old;
+	struct mm_area *vma = pmc->old;
 	struct mm_struct *mm = vma->vm_mm;
 	pud_t pud;
 
@@ -439,7 +439,7 @@ static bool move_huge_pud(struct pagetable_move_control *pmc,
 		pud_t *old_pud, pud_t *new_pud)
 {
 	spinlock_t *old_ptl, *new_ptl;
-	struct vm_area_struct *vma = pmc->old;
+	struct mm_area *vma = pmc->old;
 	struct mm_struct *mm = vma->vm_mm;
 	pud_t pud;
 
@@ -598,7 +598,7 @@ static bool move_pgt_entry(struct pagetable_move_control *pmc,
  * so we make an exception for it.
  */
 static bool can_align_down(struct pagetable_move_control *pmc,
-			   struct vm_area_struct *vma, unsigned long addr_to_align,
+			   struct mm_area *vma, unsigned long addr_to_align,
 			   unsigned long mask)
 {
 	unsigned long addr_masked = addr_to_align & mask;
@@ -902,7 +902,7 @@ static bool vrm_implies_new_addr(struct vma_remap_struct *vrm)
  */
 static unsigned long vrm_set_new_addr(struct vma_remap_struct *vrm)
 {
-	struct vm_area_struct *vma = vrm->vma;
+	struct mm_area *vma = vrm->vma;
 	unsigned long map_flags = 0;
 	/* Page Offset _into_ the VMA. */
 	pgoff_t internal_pgoff = (vrm->addr - vma->vm_start) >> PAGE_SHIFT;
@@ -978,7 +978,7 @@ static void vrm_stat_account(struct vma_remap_struct *vrm,
 {
 	unsigned long pages = bytes >> PAGE_SHIFT;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma = vrm->vma;
+	struct mm_area *vma = vrm->vma;
 
 	vm_stat_account(mm, vma->vm_flags, pages);
 	if (vma->vm_flags & VM_LOCKED) {
@@ -994,7 +994,7 @@ static void vrm_stat_account(struct vma_remap_struct *vrm,
 static unsigned long prep_move_vma(struct vma_remap_struct *vrm)
 {
 	unsigned long err = 0;
-	struct vm_area_struct *vma = vrm->vma;
+	struct mm_area *vma = vrm->vma;
 	unsigned long old_addr = vrm->addr;
 	unsigned long old_len = vrm->old_len;
 	unsigned long dummy = vma->vm_flags;
@@ -1043,7 +1043,7 @@ static void unmap_source_vma(struct vma_remap_struct *vrm)
 	struct mm_struct *mm = current->mm;
 	unsigned long addr = vrm->addr;
 	unsigned long len = vrm->old_len;
-	struct vm_area_struct *vma = vrm->vma;
+	struct mm_area *vma = vrm->vma;
 	VMA_ITERATOR(vmi, mm, addr);
 	int err;
 	unsigned long vm_start;
@@ -1119,13 +1119,13 @@ static void unmap_source_vma(struct vma_remap_struct *vrm)
 		unsigned long end = addr + len;
 
 		if (vm_start < addr) {
-			struct vm_area_struct *prev = vma_prev(&vmi);
+			struct mm_area *prev = vma_prev(&vmi);
 
 			vm_flags_set(prev, VM_ACCOUNT); /* Acquires VMA lock. */
 		}
 
 		if (vm_end > end) {
-			struct vm_area_struct *next = vma_next(&vmi);
+			struct mm_area *next = vma_next(&vmi);
 
 			vm_flags_set(next, VM_ACCOUNT); /* Acquires VMA lock. */
 		}
@@ -1141,14 +1141,14 @@ static void unmap_source_vma(struct vma_remap_struct *vrm)
  * error code.
  */
 static int copy_vma_and_data(struct vma_remap_struct *vrm,
-			     struct vm_area_struct **new_vma_ptr)
+			     struct mm_area **new_vma_ptr)
 {
 	unsigned long internal_offset = vrm->addr - vrm->vma->vm_start;
 	unsigned long internal_pgoff = internal_offset >> PAGE_SHIFT;
 	unsigned long new_pgoff = vrm->vma->vm_pgoff + internal_pgoff;
 	unsigned long moved_len;
-	struct vm_area_struct *vma = vrm->vma;
-	struct vm_area_struct *new_vma;
+	struct mm_area *vma = vrm->vma;
+	struct mm_area *new_vma;
 	int err = 0;
 	PAGETABLE_MOVE(pmc, NULL, NULL, vrm->addr, vrm->new_addr, vrm->old_len);
 
@@ -1206,7 +1206,7 @@ static int copy_vma_and_data(struct vma_remap_struct *vrm,
  * links from it (if the entire VMA was copied over).
  */
 static void dontunmap_complete(struct vma_remap_struct *vrm,
-			       struct vm_area_struct *new_vma)
+			       struct mm_area *new_vma)
 {
 	unsigned long start = vrm->addr;
 	unsigned long end = vrm->addr + vrm->old_len;
@@ -1232,7 +1232,7 @@ static void dontunmap_complete(struct vma_remap_struct *vrm,
 static unsigned long move_vma(struct vma_remap_struct *vrm)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *new_vma;
+	struct mm_area *new_vma;
 	unsigned long hiwater_vm;
 	int err;
 
@@ -1288,7 +1288,7 @@ static unsigned long move_vma(struct vma_remap_struct *vrm)
 static int resize_is_valid(struct vma_remap_struct *vrm)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma = vrm->vma;
+	struct mm_area *vma = vrm->vma;
 	unsigned long addr = vrm->addr;
 	unsigned long old_len = vrm->old_len;
 	unsigned long new_len = vrm->new_len;
@@ -1444,7 +1444,7 @@ static unsigned long mremap_to(struct vma_remap_struct *vrm)
 	return move_vma(vrm);
 }
 
-static int vma_expandable(struct vm_area_struct *vma, unsigned long delta)
+static int vma_expandable(struct mm_area *vma, unsigned long delta)
 {
 	unsigned long end = vma->vm_end + delta;
 
@@ -1546,7 +1546,7 @@ static unsigned long check_mremap_params(struct vma_remap_struct *vrm)
 static unsigned long expand_vma_in_place(struct vma_remap_struct *vrm)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma = vrm->vma;
+	struct mm_area *vma = vrm->vma;
 	VMA_ITERATOR(vmi, mm, vma->vm_end);
 
 	if (!vrm_charge(vrm))
@@ -1688,7 +1688,7 @@ static unsigned long mremap_at(struct vma_remap_struct *vrm)
 static unsigned long do_mremap(struct vma_remap_struct *vrm)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long ret;
 
 	ret = check_mremap_params(vrm);
diff --git a/mm/mseal.c b/mm/mseal.c
index c27197ac04e8..791ea7bc053a 100644
--- a/mm/mseal.c
+++ b/mm/mseal.c
@@ -16,7 +16,7 @@
 #include <linux/sched.h>
 #include "internal.h"
 
-static inline void set_vma_sealed(struct vm_area_struct *vma)
+static inline void set_vma_sealed(struct mm_area *vma)
 {
 	vm_flags_set(vma, VM_SEALED);
 }
@@ -37,7 +37,7 @@ static bool is_madv_discard(int behavior)
 	return false;
 }
 
-static bool is_ro_anon(struct vm_area_struct *vma)
+static bool is_ro_anon(struct mm_area *vma)
 {
 	/* check anonymous mapping. */
 	if (vma->vm_file || vma->vm_flags & VM_SHARED)
@@ -57,7 +57,7 @@ static bool is_ro_anon(struct vm_area_struct *vma)
 /*
  * Check if a vma is allowed to be modified by madvise.
  */
-bool can_modify_vma_madv(struct vm_area_struct *vma, int behavior)
+bool can_modify_vma_madv(struct mm_area *vma, int behavior)
 {
 	if (!is_madv_discard(behavior))
 		return true;
@@ -69,8 +69,8 @@ bool can_modify_vma_madv(struct vm_area_struct *vma, int behavior)
 	return true;
 }
 
-static int mseal_fixup(struct vma_iterator *vmi, struct vm_area_struct *vma,
-		struct vm_area_struct **prev, unsigned long start,
+static int mseal_fixup(struct vma_iterator *vmi, struct mm_area *vma,
+		struct mm_area **prev, unsigned long start,
 		unsigned long end, vm_flags_t newflags)
 {
 	int ret = 0;
@@ -100,7 +100,7 @@ static int mseal_fixup(struct vma_iterator *vmi, struct vm_area_struct *vma,
  */
 static int check_mm_seal(unsigned long start, unsigned long end)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long nstart = start;
 
 	VMA_ITERATOR(vmi, current->mm, start);
@@ -126,7 +126,7 @@ static int check_mm_seal(unsigned long start, unsigned long end)
 static int apply_mm_seal(unsigned long start, unsigned long end)
 {
 	unsigned long nstart;
-	struct vm_area_struct *vma, *prev;
+	struct mm_area *vma, *prev;
 
 	VMA_ITERATOR(vmi, current->mm, start);
 
diff --git a/mm/msync.c b/mm/msync.c
index ac4c9bfea2e7..c46feec8295a 100644
--- a/mm/msync.c
+++ b/mm/msync.c
@@ -33,7 +33,7 @@ SYSCALL_DEFINE3(msync, unsigned long, start, size_t, len, int, flags)
 {
 	unsigned long end;
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int unmapped_error = 0;
 	int error = -EINVAL;
 
diff --git a/mm/nommu.c b/mm/nommu.c
index 617e7ba8022f..af225d5af3bb 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -89,7 +89,7 @@ unsigned int kobjsize(const void *objp)
 	 * PAGE_SIZE for 0-order pages.
 	 */
 	if (!PageCompound(page)) {
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 
 		vma = find_vma(current->mm, (unsigned long)objp);
 		if (vma)
@@ -144,7 +144,7 @@ static void *__vmalloc_user_flags(unsigned long size, gfp_t flags)
 
 	ret = __vmalloc(size, flags);
 	if (ret) {
-		struct vm_area_struct *vma;
+		struct mm_area *vma;
 
 		mmap_write_lock(current->mm);
 		vma = find_vma(current->mm, (unsigned long)ret);
@@ -325,28 +325,28 @@ void free_vm_area(struct vm_struct *area)
 }
 EXPORT_SYMBOL_GPL(free_vm_area);
 
-int vm_insert_page(struct vm_area_struct *vma, unsigned long addr,
+int vm_insert_page(struct mm_area *vma, unsigned long addr,
 		   struct page *page)
 {
 	return -EINVAL;
 }
 EXPORT_SYMBOL(vm_insert_page);
 
-int vm_insert_pages(struct vm_area_struct *vma, unsigned long addr,
+int vm_insert_pages(struct mm_area *vma, unsigned long addr,
 			struct page **pages, unsigned long *num)
 {
 	return -EINVAL;
 }
 EXPORT_SYMBOL(vm_insert_pages);
 
-int vm_map_pages(struct vm_area_struct *vma, struct page **pages,
+int vm_map_pages(struct mm_area *vma, struct page **pages,
 			unsigned long num)
 {
 	return -EINVAL;
 }
 EXPORT_SYMBOL(vm_map_pages);
 
-int vm_map_pages_zero(struct vm_area_struct *vma, struct page **pages,
+int vm_map_pages_zero(struct mm_area *vma, struct page **pages,
 				unsigned long num)
 {
 	return -EINVAL;
@@ -540,7 +540,7 @@ static void put_nommu_region(struct vm_region *region)
 	__put_nommu_region(region);
 }
 
-static void setup_vma_to_mm(struct vm_area_struct *vma, struct mm_struct *mm)
+static void setup_vma_to_mm(struct mm_area *vma, struct mm_struct *mm)
 {
 	vma->vm_mm = mm;
 
@@ -556,7 +556,7 @@ static void setup_vma_to_mm(struct vm_area_struct *vma, struct mm_struct *mm)
 	}
 }
 
-static void cleanup_vma_from_mm(struct vm_area_struct *vma)
+static void cleanup_vma_from_mm(struct mm_area *vma)
 {
 	vma->vm_mm->map_count--;
 	/* remove the VMA from the mapping */
@@ -575,7 +575,7 @@ static void cleanup_vma_from_mm(struct vm_area_struct *vma)
 /*
  * delete a VMA from its owning mm_struct and address space
  */
-static int delete_vma_from_mm(struct vm_area_struct *vma)
+static int delete_vma_from_mm(struct mm_area *vma)
 {
 	VMA_ITERATOR(vmi, vma->vm_mm, vma->vm_start);
 
@@ -594,7 +594,7 @@ static int delete_vma_from_mm(struct vm_area_struct *vma)
 /*
  * destroy a VMA record
  */
-static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
+static void delete_vma(struct mm_struct *mm, struct mm_area *vma)
 {
 	vma_close(vma);
 	if (vma->vm_file)
@@ -603,7 +603,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
 	vm_area_free(vma);
 }
 
-struct vm_area_struct *find_vma_intersection(struct mm_struct *mm,
+struct mm_area *find_vma_intersection(struct mm_struct *mm,
 					     unsigned long start_addr,
 					     unsigned long end_addr)
 {
@@ -618,7 +618,7 @@ EXPORT_SYMBOL(find_vma_intersection);
  * look up the first VMA in which addr resides, NULL if none
  * - should be called with mm->mmap_lock at least held readlocked
  */
-struct vm_area_struct *find_vma(struct mm_struct *mm, unsigned long addr)
+struct mm_area *find_vma(struct mm_struct *mm, unsigned long addr)
 {
 	VMA_ITERATOR(vmi, mm, addr);
 
@@ -630,10 +630,10 @@ EXPORT_SYMBOL(find_vma);
  * At least xtensa ends up having protection faults even with no
  * MMU.. No stack expansion, at least.
  */
-struct vm_area_struct *lock_mm_and_find_vma(struct mm_struct *mm,
+struct mm_area *lock_mm_and_find_vma(struct mm_struct *mm,
 			unsigned long addr, struct pt_regs *regs)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	mmap_read_lock(mm);
 	vma = vma_lookup(mm, addr);
@@ -646,12 +646,12 @@ struct vm_area_struct *lock_mm_and_find_vma(struct mm_struct *mm,
  * expand a stack to a given address
  * - not supported under NOMMU conditions
  */
-int expand_stack_locked(struct vm_area_struct *vma, unsigned long addr)
+int expand_stack_locked(struct mm_area *vma, unsigned long addr)
 {
 	return -ENOMEM;
 }
 
-struct vm_area_struct *expand_stack(struct mm_struct *mm, unsigned long addr)
+struct mm_area *expand_stack(struct mm_struct *mm, unsigned long addr)
 {
 	mmap_read_unlock(mm);
 	return NULL;
@@ -661,11 +661,11 @@ struct vm_area_struct *expand_stack(struct mm_struct *mm, unsigned long addr)
  * look up the first VMA exactly that exactly matches addr
  * - should be called with mm->mmap_lock at least held readlocked
  */
-static struct vm_area_struct *find_vma_exact(struct mm_struct *mm,
+static struct mm_area *find_vma_exact(struct mm_struct *mm,
 					     unsigned long addr,
 					     unsigned long len)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long end = addr + len;
 	VMA_ITERATOR(vmi, mm, addr);
 
@@ -887,7 +887,7 @@ static unsigned long determine_vm_flags(struct file *file,
  * set up a shared mapping on a file (the driver or filesystem provides and
  * pins the storage)
  */
-static int do_mmap_shared_file(struct vm_area_struct *vma)
+static int do_mmap_shared_file(struct mm_area *vma)
 {
 	int ret;
 
@@ -908,7 +908,7 @@ static int do_mmap_shared_file(struct vm_area_struct *vma)
 /*
  * set up a private mapping or an anonymous shared mapping
  */
-static int do_mmap_private(struct vm_area_struct *vma,
+static int do_mmap_private(struct mm_area *vma,
 			   struct vm_region *region,
 			   unsigned long len,
 			   unsigned long capabilities)
@@ -1016,7 +1016,7 @@ unsigned long do_mmap(struct file *file,
 			unsigned long *populate,
 			struct list_head *uf)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct vm_region *region;
 	struct rb_node *rb;
 	unsigned long capabilities, result;
@@ -1300,10 +1300,10 @@ SYSCALL_DEFINE1(old_mmap, struct mmap_arg_struct __user *, arg)
  * split a vma into two pieces at address 'addr', a new vma is allocated either
  * for the first part or the tail.
  */
-static int split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma,
+static int split_vma(struct vma_iterator *vmi, struct mm_area *vma,
 		     unsigned long addr, int new_below)
 {
-	struct vm_area_struct *new;
+	struct mm_area *new;
 	struct vm_region *region;
 	unsigned long npages;
 	struct mm_struct *mm;
@@ -1379,7 +1379,7 @@ static int split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma,
  * the end
  */
 static int vmi_shrink_vma(struct vma_iterator *vmi,
-		      struct vm_area_struct *vma,
+		      struct mm_area *vma,
 		      unsigned long from, unsigned long to)
 {
 	struct vm_region *region;
@@ -1423,7 +1423,7 @@ static int vmi_shrink_vma(struct vma_iterator *vmi,
 int do_munmap(struct mm_struct *mm, unsigned long start, size_t len, struct list_head *uf)
 {
 	VMA_ITERATOR(vmi, mm, start);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long end;
 	int ret = 0;
 
@@ -1505,7 +1505,7 @@ SYSCALL_DEFINE2(munmap, unsigned long, addr, size_t, len)
 void exit_mmap(struct mm_struct *mm)
 {
 	VMA_ITERATOR(vmi, mm, 0);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	if (!mm)
 		return;
@@ -1540,7 +1540,7 @@ static unsigned long do_mremap(unsigned long addr,
 			unsigned long old_len, unsigned long new_len,
 			unsigned long flags, unsigned long new_addr)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	/* insanity checks first */
 	old_len = PAGE_ALIGN(old_len);
@@ -1584,7 +1584,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
 	return ret;
 }
 
-int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
+int remap_pfn_range(struct mm_area *vma, unsigned long addr,
 		unsigned long pfn, unsigned long size, pgprot_t prot)
 {
 	if (addr != (pfn << PAGE_SHIFT))
@@ -1595,7 +1595,7 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
 }
 EXPORT_SYMBOL(remap_pfn_range);
 
-int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long len)
+int vm_iomap_memory(struct mm_area *vma, phys_addr_t start, unsigned long len)
 {
 	unsigned long pfn = start >> PAGE_SHIFT;
 	unsigned long vm_len = vma->vm_end - vma->vm_start;
@@ -1605,7 +1605,7 @@ int vm_iomap_memory(struct vm_area_struct *vma, phys_addr_t start, unsigned long
 }
 EXPORT_SYMBOL(vm_iomap_memory);
 
-int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,
+int remap_vmalloc_range(struct mm_area *vma, void *addr,
 			unsigned long pgoff)
 {
 	unsigned int size = vma->vm_end - vma->vm_start;
@@ -1638,7 +1638,7 @@ EXPORT_SYMBOL(filemap_map_pages);
 static int __access_remote_vm(struct mm_struct *mm, unsigned long addr,
 			      void *buf, int len, unsigned int gup_flags)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int write = gup_flags & FOLL_WRITE;
 
 	if (mmap_read_lock_killable(mm))
@@ -1717,7 +1717,7 @@ static int __copy_remote_vm_str(struct mm_struct *mm, unsigned long addr,
 				void *buf, int len)
 {
 	unsigned long addr_end;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int ret = -EFAULT;
 
 	*(char *)buf = '\0';
@@ -1801,7 +1801,7 @@ EXPORT_SYMBOL_GPL(copy_remote_vm_str);
 int nommu_shrink_inode_mappings(struct inode *inode, size_t size,
 				size_t newsize)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct vm_region *region;
 	pgoff_t low, high;
 	size_t r_size, r_top;
diff --git a/mm/oom_kill.c b/mm/oom_kill.c
index 25923cfec9c6..55bd5da45232 100644
--- a/mm/oom_kill.c
+++ b/mm/oom_kill.c
@@ -514,7 +514,7 @@ static DEFINE_SPINLOCK(oom_reaper_lock);
 
 static bool __oom_reap_task_mm(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	bool ret = true;
 	VMA_ITERATOR(vmi, mm, 0);
 
diff --git a/mm/page_idle.c b/mm/page_idle.c
index 408aaf29a3ea..655e4c716d0d 100644
--- a/mm/page_idle.c
+++ b/mm/page_idle.c
@@ -50,7 +50,7 @@ static struct folio *page_idle_get_folio(unsigned long pfn)
 }
 
 static bool page_idle_clear_pte_refs_one(struct folio *folio,
-					struct vm_area_struct *vma,
+					struct mm_area *vma,
 					unsigned long addr, void *arg)
 {
 	DEFINE_FOLIO_VMA_WALK(pvmw, folio, vma, addr, 0);
diff --git a/mm/page_vma_mapped.c b/mm/page_vma_mapped.c
index e463c3be934a..13f7bd3e99c9 100644
--- a/mm/page_vma_mapped.c
+++ b/mm/page_vma_mapped.c
@@ -183,7 +183,7 @@ static void step_forward(struct page_vma_mapped_walk *pvmw, unsigned long size)
  */
 bool page_vma_mapped_walk(struct page_vma_mapped_walk *pvmw)
 {
-	struct vm_area_struct *vma = pvmw->vma;
+	struct mm_area *vma = pvmw->vma;
 	struct mm_struct *mm = vma->vm_mm;
 	unsigned long end;
 	spinlock_t *ptl;
@@ -342,7 +342,7 @@ bool page_vma_mapped_walk(struct page_vma_mapped_walk *pvmw)
  * Only valid for normal file or anonymous VMAs.
  */
 unsigned long page_mapped_in_vma(const struct page *page,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	const struct folio *folio = page_folio(page);
 	struct page_vma_mapped_walk pvmw = {
diff --git a/mm/pagewalk.c b/mm/pagewalk.c
index e478777c86e1..2266b191ae3e 100644
--- a/mm/pagewalk.c
+++ b/mm/pagewalk.c
@@ -321,7 +321,7 @@ static unsigned long hugetlb_entry_end(struct hstate *h, unsigned long addr,
 static int walk_hugetlb_range(unsigned long addr, unsigned long end,
 			      struct mm_walk *walk)
 {
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	struct hstate *h = hstate_vma(vma);
 	unsigned long next;
 	unsigned long hmask = huge_page_mask(h);
@@ -364,7 +364,7 @@ static int walk_hugetlb_range(unsigned long addr, unsigned long end,
 static int walk_page_test(unsigned long start, unsigned long end,
 			struct mm_walk *walk)
 {
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	const struct mm_walk_ops *ops = walk->ops;
 
 	if (ops->test_walk)
@@ -391,7 +391,7 @@ static int __walk_page_range(unsigned long start, unsigned long end,
 			struct mm_walk *walk)
 {
 	int err = 0;
-	struct vm_area_struct *vma = walk->vma;
+	struct mm_area *vma = walk->vma;
 	const struct mm_walk_ops *ops = walk->ops;
 	bool is_hugetlb = is_vm_hugetlb_page(vma);
 
@@ -426,7 +426,7 @@ static inline void process_mm_walk_lock(struct mm_struct *mm,
 		mmap_assert_write_locked(mm);
 }
 
-static inline void process_vma_walk_lock(struct vm_area_struct *vma,
+static inline void process_vma_walk_lock(struct mm_area *vma,
 					 enum page_walk_lock walk_lock)
 {
 #ifdef CONFIG_PER_VMA_LOCK
@@ -457,7 +457,7 @@ int walk_page_range_mm(struct mm_struct *mm, unsigned long start,
 {
 	int err = 0;
 	unsigned long next;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_walk walk = {
 		.ops		= ops,
 		.mm		= mm,
@@ -648,7 +648,7 @@ int walk_page_range_novma(struct mm_struct *mm, unsigned long start,
 	return walk_pgd_range(start, end, &walk);
 }
 
-int walk_page_range_vma(struct vm_area_struct *vma, unsigned long start,
+int walk_page_range_vma(struct mm_area *vma, unsigned long start,
 			unsigned long end, const struct mm_walk_ops *ops,
 			void *private)
 {
@@ -671,7 +671,7 @@ int walk_page_range_vma(struct vm_area_struct *vma, unsigned long start,
 	return __walk_page_range(start, end, &walk);
 }
 
-int walk_page_vma(struct vm_area_struct *vma, const struct mm_walk_ops *ops,
+int walk_page_vma(struct mm_area *vma, const struct mm_walk_ops *ops,
 		void *private)
 {
 	struct mm_walk walk = {
@@ -714,7 +714,7 @@ int walk_page_vma(struct vm_area_struct *vma, const struct mm_walk_ops *ops,
  *   struct mm_struct::mmap_lock is not needed.
  *
  *   Also this means that a caller can't rely on the struct
- *   vm_area_struct::vm_flags to be constant across a call,
+ *   mm_area::vm_flags to be constant across a call,
  *   except for immutable flags. Callers requiring this shouldn't use
  *   this function.
  *
@@ -729,7 +729,7 @@ int walk_page_mapping(struct address_space *mapping, pgoff_t first_index,
 		.ops		= ops,
 		.private	= private,
 	};
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	pgoff_t vba, vea, cba, cea;
 	unsigned long start_addr, end_addr;
 	int err = 0;
@@ -827,7 +827,7 @@ int walk_page_mapping(struct address_space *mapping, pgoff_t first_index,
  * Return: folio pointer on success, otherwise NULL.
  */
 struct folio *folio_walk_start(struct folio_walk *fw,
-		struct vm_area_struct *vma, unsigned long addr,
+		struct mm_area *vma, unsigned long addr,
 		folio_walk_flags_t flags)
 {
 	unsigned long entry_size;
diff --git a/mm/pgtable-generic.c b/mm/pgtable-generic.c
index 5a882f2b10f9..b6e5dc860ec0 100644
--- a/mm/pgtable-generic.c
+++ b/mm/pgtable-generic.c
@@ -65,7 +65,7 @@ void pmd_clear_bad(pmd_t *pmd)
  * used to be done in the caller, but sparc needs minor faults to
  * force that call on sun4c so we changed this macro slightly
  */
-int ptep_set_access_flags(struct vm_area_struct *vma,
+int ptep_set_access_flags(struct mm_area *vma,
 			  unsigned long address, pte_t *ptep,
 			  pte_t entry, int dirty)
 {
@@ -79,7 +79,7 @@ int ptep_set_access_flags(struct vm_area_struct *vma,
 #endif
 
 #ifndef __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
-int ptep_clear_flush_young(struct vm_area_struct *vma,
+int ptep_clear_flush_young(struct mm_area *vma,
 			   unsigned long address, pte_t *ptep)
 {
 	int young;
@@ -91,7 +91,7 @@ int ptep_clear_flush_young(struct vm_area_struct *vma,
 #endif
 
 #ifndef __HAVE_ARCH_PTEP_CLEAR_FLUSH
-pte_t ptep_clear_flush(struct vm_area_struct *vma, unsigned long address,
+pte_t ptep_clear_flush(struct mm_area *vma, unsigned long address,
 		       pte_t *ptep)
 {
 	struct mm_struct *mm = (vma)->vm_mm;
@@ -106,7 +106,7 @@ pte_t ptep_clear_flush(struct vm_area_struct *vma, unsigned long address,
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 
 #ifndef __HAVE_ARCH_PMDP_SET_ACCESS_FLAGS
-int pmdp_set_access_flags(struct vm_area_struct *vma,
+int pmdp_set_access_flags(struct mm_area *vma,
 			  unsigned long address, pmd_t *pmdp,
 			  pmd_t entry, int dirty)
 {
@@ -121,7 +121,7 @@ int pmdp_set_access_flags(struct vm_area_struct *vma,
 #endif
 
 #ifndef __HAVE_ARCH_PMDP_CLEAR_YOUNG_FLUSH
-int pmdp_clear_flush_young(struct vm_area_struct *vma,
+int pmdp_clear_flush_young(struct mm_area *vma,
 			   unsigned long address, pmd_t *pmdp)
 {
 	int young;
@@ -134,7 +134,7 @@ int pmdp_clear_flush_young(struct vm_area_struct *vma,
 #endif
 
 #ifndef __HAVE_ARCH_PMDP_HUGE_CLEAR_FLUSH
-pmd_t pmdp_huge_clear_flush(struct vm_area_struct *vma, unsigned long address,
+pmd_t pmdp_huge_clear_flush(struct mm_area *vma, unsigned long address,
 			    pmd_t *pmdp)
 {
 	pmd_t pmd;
@@ -147,7 +147,7 @@ pmd_t pmdp_huge_clear_flush(struct vm_area_struct *vma, unsigned long address,
 }
 
 #ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
-pud_t pudp_huge_clear_flush(struct vm_area_struct *vma, unsigned long address,
+pud_t pudp_huge_clear_flush(struct mm_area *vma, unsigned long address,
 			    pud_t *pudp)
 {
 	pud_t pud;
@@ -195,7 +195,7 @@ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp)
 #endif
 
 #ifndef __HAVE_ARCH_PMDP_INVALIDATE
-pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
+pmd_t pmdp_invalidate(struct mm_area *vma, unsigned long address,
 		     pmd_t *pmdp)
 {
 	VM_WARN_ON_ONCE(!pmd_present(*pmdp));
@@ -206,7 +206,7 @@ pmd_t pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
 #endif
 
 #ifndef __HAVE_ARCH_PMDP_INVALIDATE_AD
-pmd_t pmdp_invalidate_ad(struct vm_area_struct *vma, unsigned long address,
+pmd_t pmdp_invalidate_ad(struct mm_area *vma, unsigned long address,
 			 pmd_t *pmdp)
 {
 	VM_WARN_ON_ONCE(!pmd_present(*pmdp));
@@ -215,7 +215,7 @@ pmd_t pmdp_invalidate_ad(struct vm_area_struct *vma, unsigned long address,
 #endif
 
 #ifndef pmdp_collapse_flush
-pmd_t pmdp_collapse_flush(struct vm_area_struct *vma, unsigned long address,
+pmd_t pmdp_collapse_flush(struct mm_area *vma, unsigned long address,
 			  pmd_t *pmdp)
 {
 	/*
diff --git a/mm/rmap.c b/mm/rmap.c
index 67bb273dfb80..6c00e97fec67 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -147,7 +147,7 @@ static void anon_vma_chain_free(struct anon_vma_chain *anon_vma_chain)
 	kmem_cache_free(anon_vma_chain_cachep, anon_vma_chain);
 }
 
-static void anon_vma_chain_link(struct vm_area_struct *vma,
+static void anon_vma_chain_link(struct mm_area *vma,
 				struct anon_vma_chain *avc,
 				struct anon_vma *anon_vma)
 {
@@ -183,7 +183,7 @@ static void anon_vma_chain_link(struct vm_area_struct *vma,
  * to do any locking for the common case of already having
  * an anon_vma.
  */
-int __anon_vma_prepare(struct vm_area_struct *vma)
+int __anon_vma_prepare(struct mm_area *vma)
 {
 	struct mm_struct *mm = vma->vm_mm;
 	struct anon_vma *anon_vma, *allocated;
@@ -277,7 +277,7 @@ static inline void unlock_anon_vma_root(struct anon_vma *root)
  * walker has a good chance of avoiding scanning the whole hierarchy when it
  * searches where page is mapped.
  */
-int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src)
+int anon_vma_clone(struct mm_area *dst, struct mm_area *src)
 {
 	struct anon_vma_chain *avc, *pavc;
 	struct anon_vma *root = NULL;
@@ -331,7 +331,7 @@ int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src)
  * the corresponding VMA in the parent process is attached to.
  * Returns 0 on success, non-zero on failure.
  */
-int anon_vma_fork(struct vm_area_struct *vma, struct vm_area_struct *pvma)
+int anon_vma_fork(struct mm_area *vma, struct mm_area *pvma)
 {
 	struct anon_vma_chain *avc;
 	struct anon_vma *anon_vma;
@@ -393,7 +393,7 @@ int anon_vma_fork(struct vm_area_struct *vma, struct vm_area_struct *pvma)
 	return -ENOMEM;
 }
 
-void unlink_anon_vmas(struct vm_area_struct *vma)
+void unlink_anon_vmas(struct mm_area *vma)
 {
 	struct anon_vma_chain *avc, *next;
 	struct anon_vma *root = NULL;
@@ -786,7 +786,7 @@ static bool should_defer_flush(struct mm_struct *mm, enum ttu_flags flags)
  * Return: The virtual address corresponding to this page in the VMA.
  */
 unsigned long page_address_in_vma(const struct folio *folio,
-		const struct page *page, const struct vm_area_struct *vma)
+		const struct page *page, const struct mm_area *vma)
 {
 	if (folio_test_anon(folio)) {
 		struct anon_vma *page__anon_vma = folio_anon_vma(folio);
@@ -847,7 +847,7 @@ struct folio_referenced_arg {
  * arg: folio_referenced_arg will be passed
  */
 static bool folio_referenced_one(struct folio *folio,
-		struct vm_area_struct *vma, unsigned long address, void *arg)
+		struct mm_area *vma, unsigned long address, void *arg)
 {
 	struct folio_referenced_arg *pra = arg;
 	DEFINE_FOLIO_VMA_WALK(pvmw, folio, vma, address, 0);
@@ -947,7 +947,7 @@ static bool folio_referenced_one(struct folio *folio,
 	return true;
 }
 
-static bool invalid_folio_referenced_vma(struct vm_area_struct *vma, void *arg)
+static bool invalid_folio_referenced_vma(struct mm_area *vma, void *arg)
 {
 	struct folio_referenced_arg *pra = arg;
 	struct mem_cgroup *memcg = pra->memcg;
@@ -1024,7 +1024,7 @@ int folio_referenced(struct folio *folio, int is_locked,
 static int page_vma_mkclean_one(struct page_vma_mapped_walk *pvmw)
 {
 	int cleaned = 0;
-	struct vm_area_struct *vma = pvmw->vma;
+	struct mm_area *vma = pvmw->vma;
 	struct mmu_notifier_range range;
 	unsigned long address = pvmw->address;
 
@@ -1091,7 +1091,7 @@ static int page_vma_mkclean_one(struct page_vma_mapped_walk *pvmw)
 	return cleaned;
 }
 
-static bool page_mkclean_one(struct folio *folio, struct vm_area_struct *vma,
+static bool page_mkclean_one(struct folio *folio, struct mm_area *vma,
 			     unsigned long address, void *arg)
 {
 	DEFINE_FOLIO_VMA_WALK(pvmw, folio, vma, address, PVMW_SYNC);
@@ -1102,7 +1102,7 @@ static bool page_mkclean_one(struct folio *folio, struct vm_area_struct *vma,
 	return true;
 }
 
-static bool invalid_mkclean_vma(struct vm_area_struct *vma, void *arg)
+static bool invalid_mkclean_vma(struct mm_area *vma, void *arg)
 {
 	if (vma->vm_flags & VM_SHARED)
 		return false;
@@ -1143,7 +1143,7 @@ struct wrprotect_file_state {
 };
 
 static bool mapping_wrprotect_range_one(struct folio *folio,
-		struct vm_area_struct *vma, unsigned long address, void *arg)
+		struct mm_area *vma, unsigned long address, void *arg)
 {
 	struct wrprotect_file_state *state = (struct wrprotect_file_state *)arg;
 	struct page_vma_mapped_walk pvmw = {
@@ -1222,7 +1222,7 @@ EXPORT_SYMBOL_GPL(mapping_wrprotect_range);
  * Returns the number of cleaned PTEs (including PMDs).
  */
 int pfn_mkclean_range(unsigned long pfn, unsigned long nr_pages, pgoff_t pgoff,
-		      struct vm_area_struct *vma)
+		      struct mm_area *vma)
 {
 	struct page_vma_mapped_walk pvmw = {
 		.pfn		= pfn,
@@ -1242,7 +1242,7 @@ int pfn_mkclean_range(unsigned long pfn, unsigned long nr_pages, pgoff_t pgoff,
 }
 
 static __always_inline unsigned int __folio_add_rmap(struct folio *folio,
-		struct page *page, int nr_pages, struct vm_area_struct *vma,
+		struct page *page, int nr_pages, struct mm_area *vma,
 		enum rmap_level level, int *nr_pmdmapped)
 {
 	atomic_t *mapped = &folio->_nr_pages_mapped;
@@ -1327,7 +1327,7 @@ static __always_inline unsigned int __folio_add_rmap(struct folio *folio,
  * that folio can be moved into the anon_vma that belongs to just that
  * process, so the rmap code will not search the parent or sibling processes.
  */
-void folio_move_anon_rmap(struct folio *folio, struct vm_area_struct *vma)
+void folio_move_anon_rmap(struct folio *folio, struct mm_area *vma)
 {
 	void *anon_vma = vma->anon_vma;
 
@@ -1350,7 +1350,7 @@ void folio_move_anon_rmap(struct folio *folio, struct vm_area_struct *vma)
  * @address:	User virtual address of the mapping
  * @exclusive:	Whether the folio is exclusive to the process.
  */
-static void __folio_set_anon(struct folio *folio, struct vm_area_struct *vma,
+static void __folio_set_anon(struct folio *folio, struct mm_area *vma,
 			     unsigned long address, bool exclusive)
 {
 	struct anon_vma *anon_vma = vma->anon_vma;
@@ -1383,7 +1383,7 @@ static void __folio_set_anon(struct folio *folio, struct vm_area_struct *vma,
  * @address:	the user virtual address mapped
  */
 static void __page_check_anon_rmap(const struct folio *folio,
-		const struct page *page, struct vm_area_struct *vma,
+		const struct page *page, struct mm_area *vma,
 		unsigned long address)
 {
 	/*
@@ -1426,7 +1426,7 @@ static void __folio_mod_stat(struct folio *folio, int nr, int nr_pmdmapped)
 }
 
 static __always_inline void __folio_add_anon_rmap(struct folio *folio,
-		struct page *page, int nr_pages, struct vm_area_struct *vma,
+		struct page *page, int nr_pages, struct mm_area *vma,
 		unsigned long address, rmap_t flags, enum rmap_level level)
 {
 	int i, nr, nr_pmdmapped = 0;
@@ -1505,7 +1505,7 @@ static __always_inline void __folio_add_anon_rmap(struct folio *folio,
  * (but KSM folios are never downgraded).
  */
 void folio_add_anon_rmap_ptes(struct folio *folio, struct page *page,
-		int nr_pages, struct vm_area_struct *vma, unsigned long address,
+		int nr_pages, struct mm_area *vma, unsigned long address,
 		rmap_t flags)
 {
 	__folio_add_anon_rmap(folio, page, nr_pages, vma, address, flags,
@@ -1526,7 +1526,7 @@ void folio_add_anon_rmap_ptes(struct folio *folio, struct page *page,
  * the anon_vma case: to serialize mapping,index checking after setting.
  */
 void folio_add_anon_rmap_pmd(struct folio *folio, struct page *page,
-		struct vm_area_struct *vma, unsigned long address, rmap_t flags)
+		struct mm_area *vma, unsigned long address, rmap_t flags)
 {
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 	__folio_add_anon_rmap(folio, page, HPAGE_PMD_NR, vma, address, flags,
@@ -1551,7 +1551,7 @@ void folio_add_anon_rmap_pmd(struct folio *folio, struct page *page,
  *
  * If the folio is pmd-mappable, it is accounted as a THP.
  */
-void folio_add_new_anon_rmap(struct folio *folio, struct vm_area_struct *vma,
+void folio_add_new_anon_rmap(struct folio *folio, struct mm_area *vma,
 		unsigned long address, rmap_t flags)
 {
 	const bool exclusive = flags & RMAP_EXCLUSIVE;
@@ -1610,7 +1610,7 @@ void folio_add_new_anon_rmap(struct folio *folio, struct vm_area_struct *vma,
 }
 
 static __always_inline void __folio_add_file_rmap(struct folio *folio,
-		struct page *page, int nr_pages, struct vm_area_struct *vma,
+		struct page *page, int nr_pages, struct mm_area *vma,
 		enum rmap_level level)
 {
 	int nr, nr_pmdmapped = 0;
@@ -1637,7 +1637,7 @@ static __always_inline void __folio_add_file_rmap(struct folio *folio,
  * The caller needs to hold the page table lock.
  */
 void folio_add_file_rmap_ptes(struct folio *folio, struct page *page,
-		int nr_pages, struct vm_area_struct *vma)
+		int nr_pages, struct mm_area *vma)
 {
 	__folio_add_file_rmap(folio, page, nr_pages, vma, RMAP_LEVEL_PTE);
 }
@@ -1653,7 +1653,7 @@ void folio_add_file_rmap_ptes(struct folio *folio, struct page *page,
  * The caller needs to hold the page table lock.
  */
 void folio_add_file_rmap_pmd(struct folio *folio, struct page *page,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 	__folio_add_file_rmap(folio, page, HPAGE_PMD_NR, vma, RMAP_LEVEL_PMD);
@@ -1673,7 +1673,7 @@ void folio_add_file_rmap_pmd(struct folio *folio, struct page *page,
  * The caller needs to hold the page table lock.
  */
 void folio_add_file_rmap_pud(struct folio *folio, struct page *page,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && \
 	defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD)
@@ -1684,7 +1684,7 @@ void folio_add_file_rmap_pud(struct folio *folio, struct page *page,
 }
 
 static __always_inline void __folio_remove_rmap(struct folio *folio,
-		struct page *page, int nr_pages, struct vm_area_struct *vma,
+		struct page *page, int nr_pages, struct mm_area *vma,
 		enum rmap_level level)
 {
 	atomic_t *mapped = &folio->_nr_pages_mapped;
@@ -1799,7 +1799,7 @@ static __always_inline void __folio_remove_rmap(struct folio *folio,
  * The caller needs to hold the page table lock.
  */
 void folio_remove_rmap_ptes(struct folio *folio, struct page *page,
-		int nr_pages, struct vm_area_struct *vma)
+		int nr_pages, struct mm_area *vma)
 {
 	__folio_remove_rmap(folio, page, nr_pages, vma, RMAP_LEVEL_PTE);
 }
@@ -1815,7 +1815,7 @@ void folio_remove_rmap_ptes(struct folio *folio, struct page *page,
  * The caller needs to hold the page table lock.
  */
 void folio_remove_rmap_pmd(struct folio *folio, struct page *page,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
 	__folio_remove_rmap(folio, page, HPAGE_PMD_NR, vma, RMAP_LEVEL_PMD);
@@ -1835,7 +1835,7 @@ void folio_remove_rmap_pmd(struct folio *folio, struct page *page,
  * The caller needs to hold the page table lock.
  */
 void folio_remove_rmap_pud(struct folio *folio, struct page *page,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) && \
 	defined(CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD)
@@ -1867,7 +1867,7 @@ static inline bool can_batch_unmap_folio_ptes(unsigned long addr,
 /*
  * @arg: enum ttu_flags will be passed to this argument
  */
-static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma,
+static bool try_to_unmap_one(struct folio *folio, struct mm_area *vma,
 		     unsigned long address, void *arg)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -2227,7 +2227,7 @@ static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma,
 	return ret;
 }
 
-static bool invalid_migration_vma(struct vm_area_struct *vma, void *arg)
+static bool invalid_migration_vma(struct mm_area *vma, void *arg)
 {
 	return vma_is_temporary_stack(vma);
 }
@@ -2269,7 +2269,7 @@ void try_to_unmap(struct folio *folio, enum ttu_flags flags)
  * If TTU_SPLIT_HUGE_PMD is specified any PMD mappings will be split into PTEs
  * containing migration entries.
  */
-static bool try_to_migrate_one(struct folio *folio, struct vm_area_struct *vma,
+static bool try_to_migrate_one(struct folio *folio, struct mm_area *vma,
 		     unsigned long address, void *arg)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -2657,7 +2657,7 @@ struct page *make_device_exclusive(struct mm_struct *mm, unsigned long addr,
 {
 	struct mmu_notifier_range range;
 	struct folio *folio, *fw_folio;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct folio_walk fw;
 	struct page *page;
 	swp_entry_t entry;
@@ -2821,7 +2821,7 @@ static void rmap_walk_anon(struct folio *folio,
 	pgoff_end = pgoff_start + folio_nr_pages(folio) - 1;
 	anon_vma_interval_tree_foreach(avc, &anon_vma->rb_root,
 			pgoff_start, pgoff_end) {
-		struct vm_area_struct *vma = avc->vma;
+		struct mm_area *vma = avc->vma;
 		unsigned long address = vma_address(vma, pgoff_start,
 				folio_nr_pages(folio));
 
@@ -2866,7 +2866,7 @@ static void __rmap_walk_file(struct folio *folio, struct address_space *mapping,
 			     struct rmap_walk_control *rwc, bool locked)
 {
 	pgoff_t pgoff_end = pgoff_start + nr_pages - 1;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	VM_WARN_ON_FOLIO(folio && mapping != folio_mapping(folio), folio);
 	VM_WARN_ON_FOLIO(folio && pgoff_start != folio_pgoff(folio), folio);
@@ -2958,7 +2958,7 @@ void rmap_walk_locked(struct folio *folio, struct rmap_walk_control *rwc)
  * Unlike common anonymous pages, anonymous hugepages have no accounting code
  * and no lru code, because we handle hugepages differently from common pages.
  */
-void hugetlb_add_anon_rmap(struct folio *folio, struct vm_area_struct *vma,
+void hugetlb_add_anon_rmap(struct folio *folio, struct mm_area *vma,
 		unsigned long address, rmap_t flags)
 {
 	VM_WARN_ON_FOLIO(!folio_test_hugetlb(folio), folio);
@@ -2973,7 +2973,7 @@ void hugetlb_add_anon_rmap(struct folio *folio, struct vm_area_struct *vma,
 }
 
 void hugetlb_add_new_anon_rmap(struct folio *folio,
-		struct vm_area_struct *vma, unsigned long address)
+		struct mm_area *vma, unsigned long address)
 {
 	VM_WARN_ON_FOLIO(!folio_test_hugetlb(folio), folio);
 
diff --git a/mm/secretmem.c b/mm/secretmem.c
index 1b0a214ee558..6fc28aeec966 100644
--- a/mm/secretmem.c
+++ b/mm/secretmem.c
@@ -120,7 +120,7 @@ static int secretmem_release(struct inode *inode, struct file *file)
 	return 0;
 }
 
-static int secretmem_mmap(struct file *file, struct vm_area_struct *vma)
+static int secretmem_mmap(struct file *file, struct mm_area *vma)
 {
 	unsigned long len = vma->vm_end - vma->vm_start;
 
@@ -136,7 +136,7 @@ static int secretmem_mmap(struct file *file, struct vm_area_struct *vma)
 	return 0;
 }
 
-bool vma_is_secretmem(struct vm_area_struct *vma)
+bool vma_is_secretmem(struct mm_area *vma)
 {
 	return vma->vm_ops == &secretmem_vm_ops;
 }
diff --git a/mm/shmem.c b/mm/shmem.c
index 99327c30507c..c7535853a324 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -160,7 +160,7 @@ static unsigned long shmem_default_max_inodes(void)
 
 static int shmem_swapin_folio(struct inode *inode, pgoff_t index,
 			struct folio **foliop, enum sgp_type sgp, gfp_t gfp,
-			struct vm_area_struct *vma, vm_fault_t *fault_type);
+			struct mm_area *vma, vm_fault_t *fault_type);
 
 static inline struct shmem_sb_info *SHMEM_SB(struct super_block *sb)
 {
@@ -281,12 +281,12 @@ bool shmem_mapping(struct address_space *mapping)
 }
 EXPORT_SYMBOL_GPL(shmem_mapping);
 
-bool vma_is_anon_shmem(struct vm_area_struct *vma)
+bool vma_is_anon_shmem(struct mm_area *vma)
 {
 	return vma->vm_ops == &shmem_anon_vm_ops;
 }
 
-bool vma_is_shmem(struct vm_area_struct *vma)
+bool vma_is_shmem(struct mm_area *vma)
 {
 	return vma_is_anon_shmem(vma) || vma->vm_ops == &shmem_vm_ops;
 }
@@ -614,7 +614,7 @@ static unsigned int shmem_get_orders_within_size(struct inode *inode,
 
 static unsigned int shmem_huge_global_enabled(struct inode *inode, pgoff_t index,
 					      loff_t write_end, bool shmem_huge_force,
-					      struct vm_area_struct *vma,
+					      struct mm_area *vma,
 					      unsigned long vm_flags)
 {
 	unsigned int maybe_pmd_order = HPAGE_PMD_ORDER > MAX_PAGECACHE_ORDER ?
@@ -861,7 +861,7 @@ static unsigned long shmem_unused_huge_shrink(struct shmem_sb_info *sbinfo,
 
 static unsigned int shmem_huge_global_enabled(struct inode *inode, pgoff_t index,
 					      loff_t write_end, bool shmem_huge_force,
-					      struct vm_area_struct *vma,
+					      struct mm_area *vma,
 					      unsigned long vm_flags)
 {
 	return 0;
@@ -1003,7 +1003,7 @@ unsigned long shmem_partial_swap_usage(struct address_space *mapping,
  * This is safe to call without i_rwsem or the i_pages lock thanks to RCU,
  * as long as the inode doesn't go away and racy results are not a problem.
  */
-unsigned long shmem_swap_usage(struct vm_area_struct *vma)
+unsigned long shmem_swap_usage(struct mm_area *vma)
 {
 	struct inode *inode = file_inode(vma->vm_file);
 	struct shmem_inode_info *info = SHMEM_I(inode);
@@ -1755,7 +1755,7 @@ bool shmem_hpage_pmd_enabled(void)
 }
 
 unsigned long shmem_allowable_huge_orders(struct inode *inode,
-				struct vm_area_struct *vma, pgoff_t index,
+				struct mm_area *vma, pgoff_t index,
 				loff_t write_end, bool shmem_huge_force)
 {
 	unsigned long mask = READ_ONCE(huge_shmem_orders_always);
@@ -1802,7 +1802,7 @@ static unsigned long shmem_suitable_orders(struct inode *inode, struct vm_fault
 					   struct address_space *mapping, pgoff_t index,
 					   unsigned long orders)
 {
-	struct vm_area_struct *vma = vmf ? vmf->vma : NULL;
+	struct mm_area *vma = vmf ? vmf->vma : NULL;
 	pgoff_t aligned_index;
 	unsigned long pages;
 	int order;
@@ -1959,7 +1959,7 @@ static struct folio *shmem_alloc_and_add_folio(struct vm_fault *vmf,
 }
 
 static struct folio *shmem_swap_alloc_folio(struct inode *inode,
-		struct vm_area_struct *vma, pgoff_t index,
+		struct mm_area *vma, pgoff_t index,
 		swp_entry_t entry, int order, gfp_t gfp)
 {
 	struct shmem_inode_info *info = SHMEM_I(inode);
@@ -2036,7 +2036,7 @@ static bool shmem_should_replace_folio(struct folio *folio, gfp_t gfp)
 
 static int shmem_replace_folio(struct folio **foliop, gfp_t gfp,
 				struct shmem_inode_info *info, pgoff_t index,
-				struct vm_area_struct *vma)
+				struct mm_area *vma)
 {
 	struct folio *new, *old = *foliop;
 	swp_entry_t entry = old->swap;
@@ -2231,7 +2231,7 @@ static int shmem_split_large_entry(struct inode *inode, pgoff_t index,
  */
 static int shmem_swapin_folio(struct inode *inode, pgoff_t index,
 			     struct folio **foliop, enum sgp_type sgp,
-			     gfp_t gfp, struct vm_area_struct *vma,
+			     gfp_t gfp, struct mm_area *vma,
 			     vm_fault_t *fault_type)
 {
 	struct address_space *mapping = inode->i_mapping;
@@ -2434,7 +2434,7 @@ static int shmem_get_folio_gfp(struct inode *inode, pgoff_t index,
 		loff_t write_end, struct folio **foliop, enum sgp_type sgp,
 		gfp_t gfp, struct vm_fault *vmf, vm_fault_t *fault_type)
 {
-	struct vm_area_struct *vma = vmf ? vmf->vma : NULL;
+	struct mm_area *vma = vmf ? vmf->vma : NULL;
 	struct mm_struct *fault_mm;
 	struct folio *folio;
 	int error;
@@ -2853,13 +2853,13 @@ unsigned long shmem_get_unmapped_area(struct file *file,
 }
 
 #ifdef CONFIG_NUMA
-static int shmem_set_policy(struct vm_area_struct *vma, struct mempolicy *mpol)
+static int shmem_set_policy(struct mm_area *vma, struct mempolicy *mpol)
 {
 	struct inode *inode = file_inode(vma->vm_file);
 	return mpol_set_shared_policy(&SHMEM_I(inode)->policy, vma, mpol);
 }
 
-static struct mempolicy *shmem_get_policy(struct vm_area_struct *vma,
+static struct mempolicy *shmem_get_policy(struct mm_area *vma,
 					  unsigned long addr, pgoff_t *ilx)
 {
 	struct inode *inode = file_inode(vma->vm_file);
@@ -2924,7 +2924,7 @@ int shmem_lock(struct file *file, int lock, struct ucounts *ucounts)
 	return retval;
 }
 
-static int shmem_mmap(struct file *file, struct vm_area_struct *vma)
+static int shmem_mmap(struct file *file, struct mm_area *vma)
 {
 	struct inode *inode = file_inode(file);
 
@@ -3148,7 +3148,7 @@ static inline struct inode *shmem_get_inode(struct mnt_idmap *idmap,
 
 #ifdef CONFIG_USERFAULTFD
 int shmem_mfill_atomic_pte(pmd_t *dst_pmd,
-			   struct vm_area_struct *dst_vma,
+			   struct mm_area *dst_vma,
 			   unsigned long dst_addr,
 			   unsigned long src_addr,
 			   uffd_flags_t flags,
@@ -5880,7 +5880,7 @@ EXPORT_SYMBOL_GPL(shmem_file_setup_with_mnt);
  * shmem_zero_setup - setup a shared anonymous mapping
  * @vma: the vma to be mmapped is prepared by do_mmap
  */
-int shmem_zero_setup(struct vm_area_struct *vma)
+int shmem_zero_setup(struct mm_area *vma)
 {
 	struct file *file;
 	loff_t size = vma->vm_end - vma->vm_start;
diff --git a/mm/swap.c b/mm/swap.c
index 77b2d5997873..e86133c365cc 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -514,7 +514,7 @@ EXPORT_SYMBOL(folio_add_lru);
  * If the VMA is mlocked, @folio is added to the unevictable list.
  * Otherwise, it is treated the same way as folio_add_lru().
  */
-void folio_add_lru_vma(struct folio *folio, struct vm_area_struct *vma)
+void folio_add_lru_vma(struct folio *folio, struct mm_area *vma)
 {
 	VM_BUG_ON_FOLIO(folio_test_lru(folio), folio);
 
diff --git a/mm/swap.h b/mm/swap.h
index 6f4a3f927edb..a2122e9848f5 100644
--- a/mm/swap.h
+++ b/mm/swap.h
@@ -61,12 +61,12 @@ void clear_shadow_from_swap_cache(int type, unsigned long begin,
 				  unsigned long end);
 void swapcache_clear(struct swap_info_struct *si, swp_entry_t entry, int nr);
 struct folio *swap_cache_get_folio(swp_entry_t entry,
-		struct vm_area_struct *vma, unsigned long addr);
+		struct mm_area *vma, unsigned long addr);
 struct folio *filemap_get_incore_folio(struct address_space *mapping,
 		pgoff_t index);
 
 struct folio *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,
-		struct vm_area_struct *vma, unsigned long addr,
+		struct mm_area *vma, unsigned long addr,
 		struct swap_iocb **plug);
 struct folio *__read_swap_cache_async(swp_entry_t entry, gfp_t gfp_flags,
 		struct mempolicy *mpol, pgoff_t ilx, bool *new_page_allocated,
@@ -151,7 +151,7 @@ static inline void swapcache_clear(struct swap_info_struct *si, swp_entry_t entr
 }
 
 static inline struct folio *swap_cache_get_folio(swp_entry_t entry,
-		struct vm_area_struct *vma, unsigned long addr)
+		struct mm_area *vma, unsigned long addr)
 {
 	return NULL;
 }
diff --git a/mm/swap_state.c b/mm/swap_state.c
index 68fd981b514f..60a1d4571fc8 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -284,7 +284,7 @@ static inline bool swap_use_vma_readahead(void)
  * Caller must lock the swap device or hold a reference to keep it valid.
  */
 struct folio *swap_cache_get_folio(swp_entry_t entry,
-		struct vm_area_struct *vma, unsigned long addr)
+		struct mm_area *vma, unsigned long addr)
 {
 	struct folio *folio;
 
@@ -481,7 +481,7 @@ struct folio *__read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,
  * swap cache folio lock.
  */
 struct folio *read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,
-		struct vm_area_struct *vma, unsigned long addr,
+		struct mm_area *vma, unsigned long addr,
 		struct swap_iocb **plug)
 {
 	struct swap_info_struct *si;
@@ -677,7 +677,7 @@ void exit_swap_address_space(unsigned int type)
 static int swap_vma_ra_win(struct vm_fault *vmf, unsigned long *start,
 			   unsigned long *end)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	unsigned long ra_val;
 	unsigned long faddr, prev_faddr, left, right;
 	unsigned int max_win, hits, prev_win, win;
diff --git a/mm/swapfile.c b/mm/swapfile.c
index 2eff8b51a945..fb46d0ea6aec 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -1971,7 +1971,7 @@ static inline int pte_same_as_swp(pte_t pte, pte_t swp_pte)
  * just let do_wp_page work it out if a write is requested later - to
  * force COW, vm_page_prot omits write permission from any private vma.
  */
-static int unuse_pte(struct vm_area_struct *vma, pmd_t *pmd,
+static int unuse_pte(struct mm_area *vma, pmd_t *pmd,
 		unsigned long addr, swp_entry_t entry, struct folio *folio)
 {
 	struct page *page;
@@ -2072,7 +2072,7 @@ static int unuse_pte(struct vm_area_struct *vma, pmd_t *pmd,
 	return ret;
 }
 
-static int unuse_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
+static int unuse_pte_range(struct mm_area *vma, pmd_t *pmd,
 			unsigned long addr, unsigned long end,
 			unsigned int type)
 {
@@ -2145,7 +2145,7 @@ static int unuse_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
 	return 0;
 }
 
-static inline int unuse_pmd_range(struct vm_area_struct *vma, pud_t *pud,
+static inline int unuse_pmd_range(struct mm_area *vma, pud_t *pud,
 				unsigned long addr, unsigned long end,
 				unsigned int type)
 {
@@ -2164,7 +2164,7 @@ static inline int unuse_pmd_range(struct vm_area_struct *vma, pud_t *pud,
 	return 0;
 }
 
-static inline int unuse_pud_range(struct vm_area_struct *vma, p4d_t *p4d,
+static inline int unuse_pud_range(struct mm_area *vma, p4d_t *p4d,
 				unsigned long addr, unsigned long end,
 				unsigned int type)
 {
@@ -2184,7 +2184,7 @@ static inline int unuse_pud_range(struct vm_area_struct *vma, p4d_t *p4d,
 	return 0;
 }
 
-static inline int unuse_p4d_range(struct vm_area_struct *vma, pgd_t *pgd,
+static inline int unuse_p4d_range(struct mm_area *vma, pgd_t *pgd,
 				unsigned long addr, unsigned long end,
 				unsigned int type)
 {
@@ -2204,7 +2204,7 @@ static inline int unuse_p4d_range(struct vm_area_struct *vma, pgd_t *pgd,
 	return 0;
 }
 
-static int unuse_vma(struct vm_area_struct *vma, unsigned int type)
+static int unuse_vma(struct mm_area *vma, unsigned int type)
 {
 	pgd_t *pgd;
 	unsigned long addr, end, next;
@@ -2227,7 +2227,7 @@ static int unuse_vma(struct vm_area_struct *vma, unsigned int type)
 
 static int unuse_mm(struct mm_struct *mm, unsigned int type)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int ret = 0;
 	VMA_ITERATOR(vmi, mm, 0);
 
diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c
index fbf2cf62ab9f..ed1f47504327 100644
--- a/mm/userfaultfd.c
+++ b/mm/userfaultfd.c
@@ -21,7 +21,7 @@
 #include "swap.h"
 
 static __always_inline
-bool validate_dst_vma(struct vm_area_struct *dst_vma, unsigned long dst_end)
+bool validate_dst_vma(struct mm_area *dst_vma, unsigned long dst_end)
 {
 	/* Make sure that the dst range is fully within dst_vma. */
 	if (dst_end > dst_vma->vm_end)
@@ -39,10 +39,10 @@ bool validate_dst_vma(struct vm_area_struct *dst_vma, unsigned long dst_end)
 }
 
 static __always_inline
-struct vm_area_struct *find_vma_and_prepare_anon(struct mm_struct *mm,
+struct mm_area *find_vma_and_prepare_anon(struct mm_struct *mm,
 						 unsigned long addr)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	mmap_assert_locked(mm);
 	vma = vma_lookup(mm, addr);
@@ -66,10 +66,10 @@ struct vm_area_struct *find_vma_and_prepare_anon(struct mm_struct *mm,
  * Return: A locked vma containing @address, -ENOENT if no vma is found, or
  * -ENOMEM if anon_vma couldn't be allocated.
  */
-static struct vm_area_struct *uffd_lock_vma(struct mm_struct *mm,
+static struct mm_area *uffd_lock_vma(struct mm_struct *mm,
 				       unsigned long address)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	vma = lock_vma_under_rcu(mm, address);
 	if (vma) {
@@ -96,11 +96,11 @@ static struct vm_area_struct *uffd_lock_vma(struct mm_struct *mm,
 	return vma;
 }
 
-static struct vm_area_struct *uffd_mfill_lock(struct mm_struct *dst_mm,
+static struct mm_area *uffd_mfill_lock(struct mm_struct *dst_mm,
 					      unsigned long dst_start,
 					      unsigned long len)
 {
-	struct vm_area_struct *dst_vma;
+	struct mm_area *dst_vma;
 
 	dst_vma = uffd_lock_vma(dst_mm, dst_start);
 	if (IS_ERR(dst_vma) || validate_dst_vma(dst_vma, dst_start + len))
@@ -110,18 +110,18 @@ static struct vm_area_struct *uffd_mfill_lock(struct mm_struct *dst_mm,
 	return ERR_PTR(-ENOENT);
 }
 
-static void uffd_mfill_unlock(struct vm_area_struct *vma)
+static void uffd_mfill_unlock(struct mm_area *vma)
 {
 	vma_end_read(vma);
 }
 
 #else
 
-static struct vm_area_struct *uffd_mfill_lock(struct mm_struct *dst_mm,
+static struct mm_area *uffd_mfill_lock(struct mm_struct *dst_mm,
 					      unsigned long dst_start,
 					      unsigned long len)
 {
-	struct vm_area_struct *dst_vma;
+	struct mm_area *dst_vma;
 
 	mmap_read_lock(dst_mm);
 	dst_vma = find_vma_and_prepare_anon(dst_mm, dst_start);
@@ -137,14 +137,14 @@ static struct vm_area_struct *uffd_mfill_lock(struct mm_struct *dst_mm,
 	return dst_vma;
 }
 
-static void uffd_mfill_unlock(struct vm_area_struct *vma)
+static void uffd_mfill_unlock(struct mm_area *vma)
 {
 	mmap_read_unlock(vma->vm_mm);
 }
 #endif
 
 /* Check if dst_addr is outside of file's size. Must be called with ptl held. */
-static bool mfill_file_over_size(struct vm_area_struct *dst_vma,
+static bool mfill_file_over_size(struct mm_area *dst_vma,
 				 unsigned long dst_addr)
 {
 	struct inode *inode;
@@ -166,7 +166,7 @@ static bool mfill_file_over_size(struct vm_area_struct *dst_vma,
  * and anon, and for both shared and private VMAs.
  */
 int mfill_atomic_install_pte(pmd_t *dst_pmd,
-			     struct vm_area_struct *dst_vma,
+			     struct mm_area *dst_vma,
 			     unsigned long dst_addr, struct page *page,
 			     bool newly_allocated, uffd_flags_t flags)
 {
@@ -235,7 +235,7 @@ int mfill_atomic_install_pte(pmd_t *dst_pmd,
 }
 
 static int mfill_atomic_pte_copy(pmd_t *dst_pmd,
-				 struct vm_area_struct *dst_vma,
+				 struct mm_area *dst_vma,
 				 unsigned long dst_addr,
 				 unsigned long src_addr,
 				 uffd_flags_t flags,
@@ -311,7 +311,7 @@ static int mfill_atomic_pte_copy(pmd_t *dst_pmd,
 }
 
 static int mfill_atomic_pte_zeroed_folio(pmd_t *dst_pmd,
-					 struct vm_area_struct *dst_vma,
+					 struct mm_area *dst_vma,
 					 unsigned long dst_addr)
 {
 	struct folio *folio;
@@ -343,7 +343,7 @@ static int mfill_atomic_pte_zeroed_folio(pmd_t *dst_pmd,
 }
 
 static int mfill_atomic_pte_zeropage(pmd_t *dst_pmd,
-				     struct vm_area_struct *dst_vma,
+				     struct mm_area *dst_vma,
 				     unsigned long dst_addr)
 {
 	pte_t _dst_pte, *dst_pte;
@@ -378,7 +378,7 @@ static int mfill_atomic_pte_zeropage(pmd_t *dst_pmd,
 
 /* Handles UFFDIO_CONTINUE for all shmem VMAs (shared or private). */
 static int mfill_atomic_pte_continue(pmd_t *dst_pmd,
-				     struct vm_area_struct *dst_vma,
+				     struct mm_area *dst_vma,
 				     unsigned long dst_addr,
 				     uffd_flags_t flags)
 {
@@ -422,7 +422,7 @@ static int mfill_atomic_pte_continue(pmd_t *dst_pmd,
 
 /* Handles UFFDIO_POISON for all non-hugetlb VMAs. */
 static int mfill_atomic_pte_poison(pmd_t *dst_pmd,
-				   struct vm_area_struct *dst_vma,
+				   struct mm_area *dst_vma,
 				   unsigned long dst_addr,
 				   uffd_flags_t flags)
 {
@@ -487,7 +487,7 @@ static pmd_t *mm_alloc_pmd(struct mm_struct *mm, unsigned long address)
  */
 static __always_inline ssize_t mfill_atomic_hugetlb(
 					      struct userfaultfd_ctx *ctx,
-					      struct vm_area_struct *dst_vma,
+					      struct mm_area *dst_vma,
 					      unsigned long dst_start,
 					      unsigned long src_start,
 					      unsigned long len,
@@ -643,7 +643,7 @@ static __always_inline ssize_t mfill_atomic_hugetlb(
 #else /* !CONFIG_HUGETLB_PAGE */
 /* fail at build time if gcc attempts to use this */
 extern ssize_t mfill_atomic_hugetlb(struct userfaultfd_ctx *ctx,
-				    struct vm_area_struct *dst_vma,
+				    struct mm_area *dst_vma,
 				    unsigned long dst_start,
 				    unsigned long src_start,
 				    unsigned long len,
@@ -651,7 +651,7 @@ extern ssize_t mfill_atomic_hugetlb(struct userfaultfd_ctx *ctx,
 #endif /* CONFIG_HUGETLB_PAGE */
 
 static __always_inline ssize_t mfill_atomic_pte(pmd_t *dst_pmd,
-						struct vm_area_struct *dst_vma,
+						struct mm_area *dst_vma,
 						unsigned long dst_addr,
 						unsigned long src_addr,
 						uffd_flags_t flags,
@@ -701,7 +701,7 @@ static __always_inline ssize_t mfill_atomic(struct userfaultfd_ctx *ctx,
 					    uffd_flags_t flags)
 {
 	struct mm_struct *dst_mm = ctx->mm;
-	struct vm_area_struct *dst_vma;
+	struct mm_area *dst_vma;
 	ssize_t err;
 	pmd_t *dst_pmd;
 	unsigned long src_addr, dst_addr;
@@ -897,7 +897,7 @@ ssize_t mfill_atomic_poison(struct userfaultfd_ctx *ctx, unsigned long start,
 			    uffd_flags_set_mode(flags, MFILL_ATOMIC_POISON));
 }
 
-long uffd_wp_range(struct vm_area_struct *dst_vma,
+long uffd_wp_range(struct mm_area *dst_vma,
 		   unsigned long start, unsigned long len, bool enable_wp)
 {
 	unsigned int mm_cp_flags;
@@ -932,7 +932,7 @@ int mwriteprotect_range(struct userfaultfd_ctx *ctx, unsigned long start,
 	struct mm_struct *dst_mm = ctx->mm;
 	unsigned long end = start + len;
 	unsigned long _start, _end;
-	struct vm_area_struct *dst_vma;
+	struct mm_area *dst_vma;
 	unsigned long page_mask;
 	long err;
 	VMA_ITERATOR(vmi, dst_mm, start);
@@ -1027,8 +1027,8 @@ static inline bool is_pte_pages_stable(pte_t *dst_pte, pte_t *src_pte,
 }
 
 static int move_present_pte(struct mm_struct *mm,
-			    struct vm_area_struct *dst_vma,
-			    struct vm_area_struct *src_vma,
+			    struct mm_area *dst_vma,
+			    struct mm_area *src_vma,
 			    unsigned long dst_addr, unsigned long src_addr,
 			    pte_t *dst_pte, pte_t *src_pte,
 			    pte_t orig_dst_pte, pte_t orig_src_pte,
@@ -1073,7 +1073,7 @@ static int move_present_pte(struct mm_struct *mm,
 	return err;
 }
 
-static int move_swap_pte(struct mm_struct *mm, struct vm_area_struct *dst_vma,
+static int move_swap_pte(struct mm_struct *mm, struct mm_area *dst_vma,
 			 unsigned long dst_addr, unsigned long src_addr,
 			 pte_t *dst_pte, pte_t *src_pte,
 			 pte_t orig_dst_pte, pte_t orig_src_pte,
@@ -1107,8 +1107,8 @@ static int move_swap_pte(struct mm_struct *mm, struct vm_area_struct *dst_vma,
 }
 
 static int move_zeropage_pte(struct mm_struct *mm,
-			     struct vm_area_struct *dst_vma,
-			     struct vm_area_struct *src_vma,
+			     struct mm_area *dst_vma,
+			     struct mm_area *src_vma,
 			     unsigned long dst_addr, unsigned long src_addr,
 			     pte_t *dst_pte, pte_t *src_pte,
 			     pte_t orig_dst_pte, pte_t orig_src_pte,
@@ -1140,8 +1140,8 @@ static int move_zeropage_pte(struct mm_struct *mm,
  * in moving the page.
  */
 static int move_pages_pte(struct mm_struct *mm, pmd_t *dst_pmd, pmd_t *src_pmd,
-			  struct vm_area_struct *dst_vma,
-			  struct vm_area_struct *src_vma,
+			  struct mm_area *dst_vma,
+			  struct mm_area *src_vma,
 			  unsigned long dst_addr, unsigned long src_addr,
 			  __u64 mode)
 {
@@ -1445,15 +1445,15 @@ static inline bool move_splits_huge_pmd(unsigned long dst_addr,
 }
 #endif
 
-static inline bool vma_move_compatible(struct vm_area_struct *vma)
+static inline bool vma_move_compatible(struct mm_area *vma)
 {
 	return !(vma->vm_flags & (VM_PFNMAP | VM_IO |  VM_HUGETLB |
 				  VM_MIXEDMAP | VM_SHADOW_STACK));
 }
 
 static int validate_move_areas(struct userfaultfd_ctx *ctx,
-			       struct vm_area_struct *src_vma,
-			       struct vm_area_struct *dst_vma)
+			       struct mm_area *src_vma,
+			       struct mm_area *dst_vma)
 {
 	/* Only allow moving if both have the same access and protection */
 	if ((src_vma->vm_flags & VM_ACCESS_FLAGS) != (dst_vma->vm_flags & VM_ACCESS_FLAGS) ||
@@ -1491,10 +1491,10 @@ static __always_inline
 int find_vmas_mm_locked(struct mm_struct *mm,
 			unsigned long dst_start,
 			unsigned long src_start,
-			struct vm_area_struct **dst_vmap,
-			struct vm_area_struct **src_vmap)
+			struct mm_area **dst_vmap,
+			struct mm_area **src_vmap)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	mmap_assert_locked(mm);
 	vma = find_vma_and_prepare_anon(mm, dst_start);
@@ -1518,10 +1518,10 @@ int find_vmas_mm_locked(struct mm_struct *mm,
 static int uffd_move_lock(struct mm_struct *mm,
 			  unsigned long dst_start,
 			  unsigned long src_start,
-			  struct vm_area_struct **dst_vmap,
-			  struct vm_area_struct **src_vmap)
+			  struct mm_area **dst_vmap,
+			  struct mm_area **src_vmap)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int err;
 
 	vma = uffd_lock_vma(mm, dst_start);
@@ -1581,8 +1581,8 @@ static int uffd_move_lock(struct mm_struct *mm,
 	return err;
 }
 
-static void uffd_move_unlock(struct vm_area_struct *dst_vma,
-			     struct vm_area_struct *src_vma)
+static void uffd_move_unlock(struct mm_area *dst_vma,
+			     struct mm_area *src_vma)
 {
 	vma_end_read(src_vma);
 	if (src_vma != dst_vma)
@@ -1594,8 +1594,8 @@ static void uffd_move_unlock(struct vm_area_struct *dst_vma,
 static int uffd_move_lock(struct mm_struct *mm,
 			  unsigned long dst_start,
 			  unsigned long src_start,
-			  struct vm_area_struct **dst_vmap,
-			  struct vm_area_struct **src_vmap)
+			  struct mm_area **dst_vmap,
+			  struct mm_area **src_vmap)
 {
 	int err;
 
@@ -1606,8 +1606,8 @@ static int uffd_move_lock(struct mm_struct *mm,
 	return err;
 }
 
-static void uffd_move_unlock(struct vm_area_struct *dst_vma,
-			     struct vm_area_struct *src_vma)
+static void uffd_move_unlock(struct mm_area *dst_vma,
+			     struct mm_area *src_vma)
 {
 	mmap_assert_locked(src_vma->vm_mm);
 	mmap_read_unlock(dst_vma->vm_mm);
@@ -1694,7 +1694,7 @@ ssize_t move_pages(struct userfaultfd_ctx *ctx, unsigned long dst_start,
 		   unsigned long src_start, unsigned long len, __u64 mode)
 {
 	struct mm_struct *mm = ctx->mm;
-	struct vm_area_struct *src_vma, *dst_vma;
+	struct mm_area *src_vma, *dst_vma;
 	unsigned long src_addr, dst_addr;
 	pmd_t *src_pmd, *dst_pmd;
 	long err = -EINVAL;
@@ -1865,7 +1865,7 @@ ssize_t move_pages(struct userfaultfd_ctx *ctx, unsigned long dst_start,
 	return moved ? moved : err;
 }
 
-static void userfaultfd_set_vm_flags(struct vm_area_struct *vma,
+static void userfaultfd_set_vm_flags(struct mm_area *vma,
 				     vm_flags_t flags)
 {
 	const bool uffd_wp_changed = (vma->vm_flags ^ flags) & VM_UFFD_WP;
@@ -1880,7 +1880,7 @@ static void userfaultfd_set_vm_flags(struct vm_area_struct *vma,
 		vma_set_page_prot(vma);
 }
 
-static void userfaultfd_set_ctx(struct vm_area_struct *vma,
+static void userfaultfd_set_ctx(struct mm_area *vma,
 				struct userfaultfd_ctx *ctx,
 				unsigned long flags)
 {
@@ -1890,18 +1890,18 @@ static void userfaultfd_set_ctx(struct vm_area_struct *vma,
 				 (vma->vm_flags & ~__VM_UFFD_FLAGS) | flags);
 }
 
-void userfaultfd_reset_ctx(struct vm_area_struct *vma)
+void userfaultfd_reset_ctx(struct mm_area *vma)
 {
 	userfaultfd_set_ctx(vma, NULL, 0);
 }
 
-struct vm_area_struct *userfaultfd_clear_vma(struct vma_iterator *vmi,
-					     struct vm_area_struct *prev,
-					     struct vm_area_struct *vma,
+struct mm_area *userfaultfd_clear_vma(struct vma_iterator *vmi,
+					     struct mm_area *prev,
+					     struct mm_area *vma,
 					     unsigned long start,
 					     unsigned long end)
 {
-	struct vm_area_struct *ret;
+	struct mm_area *ret;
 
 	/* Reset ptes for the whole vma range if wr-protected */
 	if (userfaultfd_wp(vma))
@@ -1924,13 +1924,13 @@ struct vm_area_struct *userfaultfd_clear_vma(struct vma_iterator *vmi,
 
 /* Assumes mmap write lock taken, and mm_struct pinned. */
 int userfaultfd_register_range(struct userfaultfd_ctx *ctx,
-			       struct vm_area_struct *vma,
+			       struct mm_area *vma,
 			       unsigned long vm_flags,
 			       unsigned long start, unsigned long end,
 			       bool wp_async)
 {
 	VMA_ITERATOR(vmi, ctx->mm, start);
-	struct vm_area_struct *prev = vma_prev(&vmi);
+	struct mm_area *prev = vma_prev(&vmi);
 	unsigned long vma_end;
 	unsigned long new_flags;
 
@@ -1985,7 +1985,7 @@ int userfaultfd_register_range(struct userfaultfd_ctx *ctx,
 void userfaultfd_release_new(struct userfaultfd_ctx *ctx)
 {
 	struct mm_struct *mm = ctx->mm;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	/* the various vma->vm_userfaultfd_ctx still points to it */
@@ -2000,7 +2000,7 @@ void userfaultfd_release_new(struct userfaultfd_ctx *ctx)
 void userfaultfd_release_all(struct mm_struct *mm,
 			     struct userfaultfd_ctx *ctx)
 {
-	struct vm_area_struct *vma, *prev;
+	struct mm_area *vma, *prev;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	if (!mmget_not_zero(mm))
diff --git a/mm/util.c b/mm/util.c
index 448117da071f..e0ed4f7d00d4 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -314,7 +314,7 @@ void *memdup_user_nul(const void __user *src, size_t len)
 EXPORT_SYMBOL(memdup_user_nul);
 
 /* Check if the vma is being used as a stack by this task */
-int vma_is_stack_for_current(struct vm_area_struct *vma)
+int vma_is_stack_for_current(struct mm_area *vma)
 {
 	struct task_struct * __maybe_unused t = current;
 
@@ -324,7 +324,7 @@ int vma_is_stack_for_current(struct vm_area_struct *vma)
 /*
  * Change backing file, only valid to use during initial VMA setup.
  */
-void vma_set_file(struct vm_area_struct *vma, struct file *file)
+void vma_set_file(struct mm_area *vma, struct file *file)
 {
 	/* Changing an anonymous vma with this is illegal */
 	get_file(file);
diff --git a/mm/vma.c b/mm/vma.c
index 5cdc5612bfc1..06e6e9c02ab8 100644
--- a/mm/vma.c
+++ b/mm/vma.c
@@ -21,8 +21,8 @@ struct mmap_state {
 	unsigned long charged;
 	bool retry_merge;
 
-	struct vm_area_struct *prev;
-	struct vm_area_struct *next;
+	struct mm_area *prev;
+	struct mm_area *next;
 
 	/* Unmapping state. */
 	struct vma_munmap_struct vms;
@@ -59,7 +59,7 @@ struct mmap_state {
 
 static inline bool is_mergeable_vma(struct vma_merge_struct *vmg, bool merge_next)
 {
-	struct vm_area_struct *vma = merge_next ? vmg->next : vmg->prev;
+	struct mm_area *vma = merge_next ? vmg->next : vmg->prev;
 
 	if (!mpol_equal(vmg->policy, vma_policy(vma)))
 		return false;
@@ -83,7 +83,7 @@ static inline bool is_mergeable_vma(struct vma_merge_struct *vmg, bool merge_nex
 }
 
 static inline bool is_mergeable_anon_vma(struct anon_vma *anon_vma1,
-		 struct anon_vma *anon_vma2, struct vm_area_struct *vma)
+		 struct anon_vma *anon_vma2, struct mm_area *vma)
 {
 	/*
 	 * The list_is_singular() test is to avoid merging VMA cloned from
@@ -96,8 +96,8 @@ static inline bool is_mergeable_anon_vma(struct anon_vma *anon_vma1,
 }
 
 /* Are the anon_vma's belonging to each VMA compatible with one another? */
-static inline bool are_anon_vmas_compatible(struct vm_area_struct *vma1,
-					    struct vm_area_struct *vma2)
+static inline bool are_anon_vmas_compatible(struct mm_area *vma1,
+					    struct mm_area *vma2)
 {
 	return is_mergeable_anon_vma(vma1->anon_vma, vma2->anon_vma, NULL);
 }
@@ -110,11 +110,11 @@ static inline bool are_anon_vmas_compatible(struct vm_area_struct *vma1,
  *       removal.
  */
 static void init_multi_vma_prep(struct vma_prepare *vp,
-				struct vm_area_struct *vma,
+				struct mm_area *vma,
 				struct vma_merge_struct *vmg)
 {
-	struct vm_area_struct *adjust;
-	struct vm_area_struct **remove = &vp->remove;
+	struct mm_area *adjust;
+	struct mm_area **remove = &vp->remove;
 
 	memset(vp, 0, sizeof(struct vma_prepare));
 	vp->vma = vma;
@@ -191,7 +191,7 @@ static bool can_vma_merge_after(struct vma_merge_struct *vmg)
 	return false;
 }
 
-static void __vma_link_file(struct vm_area_struct *vma,
+static void __vma_link_file(struct mm_area *vma,
 			    struct address_space *mapping)
 {
 	if (vma_is_shared_maywrite(vma))
@@ -205,7 +205,7 @@ static void __vma_link_file(struct vm_area_struct *vma,
 /*
  * Requires inode->i_mapping->i_mmap_rwsem
  */
-static void __remove_shared_vm_struct(struct vm_area_struct *vma,
+static void __remove_shared_vm_struct(struct mm_area *vma,
 				      struct address_space *mapping)
 {
 	if (vma_is_shared_maywrite(vma))
@@ -231,7 +231,7 @@ static void __remove_shared_vm_struct(struct vm_area_struct *vma,
  * the root anon_vma's mutex.
  */
 static void
-anon_vma_interval_tree_pre_update_vma(struct vm_area_struct *vma)
+anon_vma_interval_tree_pre_update_vma(struct mm_area *vma)
 {
 	struct anon_vma_chain *avc;
 
@@ -240,7 +240,7 @@ anon_vma_interval_tree_pre_update_vma(struct vm_area_struct *vma)
 }
 
 static void
-anon_vma_interval_tree_post_update_vma(struct vm_area_struct *vma)
+anon_vma_interval_tree_post_update_vma(struct mm_area *vma)
 {
 	struct anon_vma_chain *avc;
 
@@ -374,7 +374,7 @@ static void vma_complete(struct vma_prepare *vp, struct vma_iterator *vmi,
  * @vp: The vma_prepare struct
  * @vma: The vma that will be altered once locked
  */
-static void init_vma_prep(struct vma_prepare *vp, struct vm_area_struct *vma)
+static void init_vma_prep(struct vma_prepare *vp, struct mm_area *vma)
 {
 	init_multi_vma_prep(vp, vma, NULL);
 }
@@ -420,7 +420,7 @@ static bool can_vma_merge_right(struct vma_merge_struct *vmg,
 /*
  * Close a vm structure and free it.
  */
-void remove_vma(struct vm_area_struct *vma)
+void remove_vma(struct mm_area *vma)
 {
 	might_sleep();
 	vma_close(vma);
@@ -435,8 +435,8 @@ void remove_vma(struct vm_area_struct *vma)
  *
  * Called with the mm semaphore held.
  */
-void unmap_region(struct ma_state *mas, struct vm_area_struct *vma,
-		struct vm_area_struct *prev, struct vm_area_struct *next)
+void unmap_region(struct ma_state *mas, struct mm_area *vma,
+		struct mm_area *prev, struct mm_area *next)
 {
 	struct mm_struct *mm = vma->vm_mm;
 	struct mmu_gather tlb;
@@ -458,11 +458,11 @@ void unmap_region(struct ma_state *mas, struct vm_area_struct *vma,
  * VMA Iterator will point to the original VMA.
  */
 static __must_check int
-__split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma,
+__split_vma(struct vma_iterator *vmi, struct mm_area *vma,
 	    unsigned long addr, int new_below)
 {
 	struct vma_prepare vp;
-	struct vm_area_struct *new;
+	struct mm_area *new;
 	int err;
 
 	WARN_ON(vma->vm_start >= addr);
@@ -544,7 +544,7 @@ __split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma,
  * Split a vma into two pieces at address 'addr', a new vma is allocated
  * either for the first part or the tail.
  */
-static int split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma,
+static int split_vma(struct vma_iterator *vmi, struct mm_area *vma,
 		     unsigned long addr, int new_below)
 {
 	if (vma->vm_mm->map_count >= sysctl_max_map_count)
@@ -561,8 +561,8 @@ static int split_vma(struct vma_iterator *vmi, struct vm_area_struct *vma,
  *
  * Returns: 0 on success.
  */
-static int dup_anon_vma(struct vm_area_struct *dst,
-			struct vm_area_struct *src, struct vm_area_struct **dup)
+static int dup_anon_vma(struct mm_area *dst,
+			struct mm_area *src, struct mm_area **dup)
 {
 	/*
 	 * Easily overlooked: when mprotect shifts the boundary, make sure the
@@ -589,7 +589,7 @@ void validate_mm(struct mm_struct *mm)
 {
 	int bug = 0;
 	int i = 0;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, 0);
 
 	mt_validate(&mm->mm_mt);
@@ -647,7 +647,7 @@ void validate_mm(struct mm_struct *mm)
  */
 static void vmg_adjust_set_range(struct vma_merge_struct *vmg)
 {
-	struct vm_area_struct *adjust;
+	struct mm_area *adjust;
 	pgoff_t pgoff;
 
 	if (vmg->__adjust_middle_start) {
@@ -670,7 +670,7 @@ static void vmg_adjust_set_range(struct vma_merge_struct *vmg)
  */
 static int commit_merge(struct vma_merge_struct *vmg)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct vma_prepare vp;
 
 	if (vmg->__adjust_next_start) {
@@ -705,7 +705,7 @@ static int commit_merge(struct vma_merge_struct *vmg)
 }
 
 /* We can only remove VMAs when merging if they do not have a close hook. */
-static bool can_merge_remove_vma(struct vm_area_struct *vma)
+static bool can_merge_remove_vma(struct mm_area *vma)
 {
 	return !vma->vm_ops || !vma->vm_ops->close;
 }
@@ -739,13 +739,13 @@ static bool can_merge_remove_vma(struct vm_area_struct *vma)
  * - The caller must hold a WRITE lock on the mm_struct->mmap_lock.
  * - vmi must be positioned within [@vmg->middle->vm_start, @vmg->middle->vm_end).
  */
-static __must_check struct vm_area_struct *vma_merge_existing_range(
+static __must_check struct mm_area *vma_merge_existing_range(
 		struct vma_merge_struct *vmg)
 {
-	struct vm_area_struct *middle = vmg->middle;
-	struct vm_area_struct *prev = vmg->prev;
-	struct vm_area_struct *next;
-	struct vm_area_struct *anon_dup = NULL;
+	struct mm_area *middle = vmg->middle;
+	struct mm_area *prev = vmg->prev;
+	struct mm_area *next;
+	struct mm_area *anon_dup = NULL;
 	unsigned long start = vmg->start;
 	unsigned long end = vmg->end;
 	bool left_side = middle && start == middle->vm_start;
@@ -974,10 +974,10 @@ static __must_check struct vm_area_struct *vma_merge_existing_range(
  * - The caller must have specified the next vma in @vmg->next.
  * - The caller must have positioned the vmi at or before the gap.
  */
-struct vm_area_struct *vma_merge_new_range(struct vma_merge_struct *vmg)
+struct mm_area *vma_merge_new_range(struct vma_merge_struct *vmg)
 {
-	struct vm_area_struct *prev = vmg->prev;
-	struct vm_area_struct *next = vmg->next;
+	struct mm_area *prev = vmg->prev;
+	struct mm_area *next = vmg->next;
 	unsigned long end = vmg->end;
 	bool can_merge_left, can_merge_right;
 
@@ -1053,10 +1053,10 @@ struct vm_area_struct *vma_merge_new_range(struct vma_merge_struct *vmg)
  */
 int vma_expand(struct vma_merge_struct *vmg)
 {
-	struct vm_area_struct *anon_dup = NULL;
+	struct mm_area *anon_dup = NULL;
 	bool remove_next = false;
-	struct vm_area_struct *middle = vmg->middle;
-	struct vm_area_struct *next = vmg->next;
+	struct mm_area *middle = vmg->middle;
+	struct mm_area *next = vmg->next;
 
 	mmap_assert_write_locked(vmg->mm);
 
@@ -1105,7 +1105,7 @@ int vma_expand(struct vma_merge_struct *vmg)
  *
  * Returns: 0 on success, -ENOMEM otherwise
  */
-int vma_shrink(struct vma_iterator *vmi, struct vm_area_struct *vma,
+int vma_shrink(struct vma_iterator *vmi, struct mm_area *vma,
 	       unsigned long start, unsigned long end, pgoff_t pgoff)
 {
 	struct vma_prepare vp;
@@ -1162,7 +1162,7 @@ static inline void vms_clear_ptes(struct vma_munmap_struct *vms,
 static void vms_clean_up_area(struct vma_munmap_struct *vms,
 		struct ma_state *mas_detach)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	if (!vms->nr_pages)
 		return;
@@ -1185,7 +1185,7 @@ static void vms_clean_up_area(struct vma_munmap_struct *vms,
 static void vms_complete_munmap_vmas(struct vma_munmap_struct *vms,
 		struct ma_state *mas_detach)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct mm_struct *mm;
 
 	mm = current->mm;
@@ -1231,7 +1231,7 @@ static void vms_complete_munmap_vmas(struct vma_munmap_struct *vms,
  */
 static void reattach_vmas(struct ma_state *mas_detach)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	mas_set(mas_detach, 0);
 	mas_for_each(mas_detach, vma, ULONG_MAX)
@@ -1253,7 +1253,7 @@ static void reattach_vmas(struct ma_state *mas_detach)
 static int vms_gather_munmap_vmas(struct vma_munmap_struct *vms,
 		struct ma_state *mas_detach)
 {
-	struct vm_area_struct *next = NULL;
+	struct mm_area *next = NULL;
 	int error;
 
 	/*
@@ -1356,7 +1356,7 @@ static int vms_gather_munmap_vmas(struct vma_munmap_struct *vms,
 	/* Make sure no VMAs are about to be lost. */
 	{
 		MA_STATE(test, mas_detach->tree, 0, 0);
-		struct vm_area_struct *vma_mas, *vma_test;
+		struct mm_area *vma_mas, *vma_test;
 		int test_count = 0;
 
 		vma_iter_set(vms->vmi, vms->start);
@@ -1392,14 +1392,14 @@ static int vms_gather_munmap_vmas(struct vma_munmap_struct *vms,
  * init_vma_munmap() - Initializer wrapper for vma_munmap_struct
  * @vms: The vma munmap struct
  * @vmi: The vma iterator
- * @vma: The first vm_area_struct to munmap
+ * @vma: The first mm_area to munmap
  * @start: The aligned start address to munmap
  * @end: The aligned end address to munmap
  * @uf: The userfaultfd list_head
  * @unlock: Unlock after the operation.  Only unlocked on success
  */
 static void init_vma_munmap(struct vma_munmap_struct *vms,
-		struct vma_iterator *vmi, struct vm_area_struct *vma,
+		struct vma_iterator *vmi, struct mm_area *vma,
 		unsigned long start, unsigned long end, struct list_head *uf,
 		bool unlock)
 {
@@ -1424,7 +1424,7 @@ static void init_vma_munmap(struct vma_munmap_struct *vms,
 /*
  * do_vmi_align_munmap() - munmap the aligned region from @start to @end.
  * @vmi: The vma iterator
- * @vma: The starting vm_area_struct
+ * @vma: The starting mm_area
  * @mm: The mm_struct
  * @start: The aligned start address to munmap.
  * @end: The aligned end address to munmap.
@@ -1435,7 +1435,7 @@ static void init_vma_munmap(struct vma_munmap_struct *vms,
  * Return: 0 on success and drops the lock if so directed, error and leaves the
  * lock held otherwise.
  */
-int do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma,
+int do_vmi_align_munmap(struct vma_iterator *vmi, struct mm_area *vma,
 		struct mm_struct *mm, unsigned long start, unsigned long end,
 		struct list_head *uf, bool unlock)
 {
@@ -1487,7 +1487,7 @@ int do_vmi_munmap(struct vma_iterator *vmi, struct mm_struct *mm,
 		  bool unlock)
 {
 	unsigned long end;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	if ((offset_in_page(start)) || start > TASK_SIZE || len > TASK_SIZE-start)
 		return -EINVAL;
@@ -1520,12 +1520,12 @@ int do_vmi_munmap(struct vma_iterator *vmi, struct mm_struct *mm,
  * The function returns either the merged VMA, the original VMA if a split was
  * required instead, or an error if the split failed.
  */
-static struct vm_area_struct *vma_modify(struct vma_merge_struct *vmg)
+static struct mm_area *vma_modify(struct vma_merge_struct *vmg)
 {
-	struct vm_area_struct *vma = vmg->middle;
+	struct mm_area *vma = vmg->middle;
 	unsigned long start = vmg->start;
 	unsigned long end = vmg->end;
-	struct vm_area_struct *merged;
+	struct mm_area *merged;
 
 	/* First, try to merge. */
 	merged = vma_merge_existing_range(vmg);
@@ -1553,9 +1553,9 @@ static struct vm_area_struct *vma_modify(struct vma_merge_struct *vmg)
 	return vma;
 }
 
-struct vm_area_struct *vma_modify_flags(
-	struct vma_iterator *vmi, struct vm_area_struct *prev,
-	struct vm_area_struct *vma, unsigned long start, unsigned long end,
+struct mm_area *vma_modify_flags(
+	struct vma_iterator *vmi, struct mm_area *prev,
+	struct mm_area *vma, unsigned long start, unsigned long end,
 	unsigned long new_flags)
 {
 	VMG_VMA_STATE(vmg, vmi, prev, vma, start, end);
@@ -1565,10 +1565,10 @@ struct vm_area_struct *vma_modify_flags(
 	return vma_modify(&vmg);
 }
 
-struct vm_area_struct
+struct mm_area
 *vma_modify_flags_name(struct vma_iterator *vmi,
-		       struct vm_area_struct *prev,
-		       struct vm_area_struct *vma,
+		       struct mm_area *prev,
+		       struct mm_area *vma,
 		       unsigned long start,
 		       unsigned long end,
 		       unsigned long new_flags,
@@ -1582,10 +1582,10 @@ struct vm_area_struct
 	return vma_modify(&vmg);
 }
 
-struct vm_area_struct
+struct mm_area
 *vma_modify_policy(struct vma_iterator *vmi,
-		   struct vm_area_struct *prev,
-		   struct vm_area_struct *vma,
+		   struct mm_area *prev,
+		   struct mm_area *vma,
 		   unsigned long start, unsigned long end,
 		   struct mempolicy *new_pol)
 {
@@ -1596,10 +1596,10 @@ struct vm_area_struct
 	return vma_modify(&vmg);
 }
 
-struct vm_area_struct
+struct mm_area
 *vma_modify_flags_uffd(struct vma_iterator *vmi,
-		       struct vm_area_struct *prev,
-		       struct vm_area_struct *vma,
+		       struct mm_area *prev,
+		       struct mm_area *vma,
 		       unsigned long start, unsigned long end,
 		       unsigned long new_flags,
 		       struct vm_userfaultfd_ctx new_ctx)
@@ -1616,8 +1616,8 @@ struct vm_area_struct
  * Expand vma by delta bytes, potentially merging with an immediately adjacent
  * VMA with identical properties.
  */
-struct vm_area_struct *vma_merge_extend(struct vma_iterator *vmi,
-					struct vm_area_struct *vma,
+struct mm_area *vma_merge_extend(struct vma_iterator *vmi,
+					struct mm_area *vma,
 					unsigned long delta)
 {
 	VMG_VMA_STATE(vmg, vmi, vma, vma, vma->vm_end, vma->vm_end + delta);
@@ -1650,7 +1650,7 @@ static void unlink_file_vma_batch_process(struct unlink_vma_file_batch *vb)
 }
 
 void unlink_file_vma_batch_add(struct unlink_vma_file_batch *vb,
-			       struct vm_area_struct *vma)
+			       struct mm_area *vma)
 {
 	if (vma->vm_file == NULL)
 		return;
@@ -1673,7 +1673,7 @@ void unlink_file_vma_batch_final(struct unlink_vma_file_batch *vb)
  * Unlink a file-based vm structure from its interval tree, to hide
  * vma from rmap and vmtruncate before freeing its page tables.
  */
-void unlink_file_vma(struct vm_area_struct *vma)
+void unlink_file_vma(struct mm_area *vma)
 {
 	struct file *file = vma->vm_file;
 
@@ -1686,7 +1686,7 @@ void unlink_file_vma(struct vm_area_struct *vma)
 	}
 }
 
-void vma_link_file(struct vm_area_struct *vma)
+void vma_link_file(struct mm_area *vma)
 {
 	struct file *file = vma->vm_file;
 	struct address_space *mapping;
@@ -1699,7 +1699,7 @@ void vma_link_file(struct vm_area_struct *vma)
 	}
 }
 
-int vma_link(struct mm_struct *mm, struct vm_area_struct *vma)
+int vma_link(struct mm_struct *mm, struct mm_area *vma)
 {
 	VMA_ITERATOR(vmi, mm, 0);
 
@@ -1719,14 +1719,14 @@ int vma_link(struct mm_struct *mm, struct vm_area_struct *vma)
  * Copy the vma structure to a new location in the same mm,
  * prior to moving page table entries, to effect an mremap move.
  */
-struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+struct mm_area *copy_vma(struct mm_area **vmap,
 	unsigned long addr, unsigned long len, pgoff_t pgoff,
 	bool *need_rmap_locks)
 {
-	struct vm_area_struct *vma = *vmap;
+	struct mm_area *vma = *vmap;
 	unsigned long vma_start = vma->vm_start;
 	struct mm_struct *mm = vma->vm_mm;
-	struct vm_area_struct *new_vma;
+	struct mm_area *new_vma;
 	bool faulted_in_anon_vma = true;
 	VMA_ITERATOR(vmi, mm, addr);
 	VMG_VMA_STATE(vmg, &vmi, NULL, vma, addr, addr + len);
@@ -1818,7 +1818,7 @@ struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
  * driver is doing some kind of reference counting. But that doesn't
  * really matter for the anon_vma sharing case.
  */
-static int anon_vma_compatible(struct vm_area_struct *a, struct vm_area_struct *b)
+static int anon_vma_compatible(struct mm_area *a, struct mm_area *b)
 {
 	return a->vm_end == b->vm_start &&
 		mpol_equal(vma_policy(a), vma_policy(b)) &&
@@ -1849,9 +1849,9 @@ static int anon_vma_compatible(struct vm_area_struct *a, struct vm_area_struct *
  * and with the same memory policies). That's all stable, even with just
  * a read lock on the mmap_lock.
  */
-static struct anon_vma *reusable_anon_vma(struct vm_area_struct *old,
-					  struct vm_area_struct *a,
-					  struct vm_area_struct *b)
+static struct anon_vma *reusable_anon_vma(struct mm_area *old,
+					  struct mm_area *a,
+					  struct mm_area *b)
 {
 	if (anon_vma_compatible(a, b)) {
 		struct anon_vma *anon_vma = READ_ONCE(old->anon_vma);
@@ -1870,10 +1870,10 @@ static struct anon_vma *reusable_anon_vma(struct vm_area_struct *old,
  * anon_vmas being allocated, preventing vma merge in subsequent
  * mprotect.
  */
-struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *vma)
+struct anon_vma *find_mergeable_anon_vma(struct mm_area *vma)
 {
 	struct anon_vma *anon_vma = NULL;
-	struct vm_area_struct *prev, *next;
+	struct mm_area *prev, *next;
 	VMA_ITERATOR(vmi, vma->vm_mm, vma->vm_end);
 
 	/* Try next first. */
@@ -1909,13 +1909,13 @@ static bool vm_ops_needs_writenotify(const struct vm_operations_struct *vm_ops)
 	return vm_ops && (vm_ops->page_mkwrite || vm_ops->pfn_mkwrite);
 }
 
-static bool vma_is_shared_writable(struct vm_area_struct *vma)
+static bool vma_is_shared_writable(struct mm_area *vma)
 {
 	return (vma->vm_flags & (VM_WRITE | VM_SHARED)) ==
 		(VM_WRITE | VM_SHARED);
 }
 
-static bool vma_fs_can_writeback(struct vm_area_struct *vma)
+static bool vma_fs_can_writeback(struct mm_area *vma)
 {
 	/* No managed pages to writeback. */
 	if (vma->vm_flags & VM_PFNMAP)
@@ -1929,7 +1929,7 @@ static bool vma_fs_can_writeback(struct vm_area_struct *vma)
  * Does this VMA require the underlying folios to have their dirty state
  * tracked?
  */
-bool vma_needs_dirty_tracking(struct vm_area_struct *vma)
+bool vma_needs_dirty_tracking(struct mm_area *vma)
 {
 	/* Only shared, writable VMAs require dirty tracking. */
 	if (!vma_is_shared_writable(vma))
@@ -1952,7 +1952,7 @@ bool vma_needs_dirty_tracking(struct vm_area_struct *vma)
  * to the private version (using protection_map[] without the
  * VM_SHARED bit).
  */
-bool vma_wants_writenotify(struct vm_area_struct *vma, pgprot_t vm_page_prot)
+bool vma_wants_writenotify(struct mm_area *vma, pgprot_t vm_page_prot)
 {
 	/* If it was private or non-writable, the write bit is already clear */
 	if (!vma_is_shared_writable(vma))
@@ -2066,7 +2066,7 @@ static void vm_lock_mapping(struct mm_struct *mm, struct address_space *mapping)
  */
 int mm_take_all_locks(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct anon_vma_chain *avc;
 	VMA_ITERATOR(vmi, mm, 0);
 
@@ -2162,7 +2162,7 @@ static void vm_unlock_mapping(struct address_space *mapping)
  */
 void mm_drop_all_locks(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct anon_vma_chain *avc;
 	VMA_ITERATOR(vmi, mm, 0);
 
@@ -2301,7 +2301,7 @@ static int __mmap_prepare(struct mmap_state *map, struct list_head *uf)
 
 
 static int __mmap_new_file_vma(struct mmap_state *map,
-			       struct vm_area_struct *vma)
+			       struct mm_area *vma)
 {
 	struct vma_iterator *vmi = map->vmi;
 	int error;
@@ -2345,11 +2345,11 @@ static int __mmap_new_file_vma(struct mmap_state *map,
  *
  * Returns: Zero on success, or an error.
  */
-static int __mmap_new_vma(struct mmap_state *map, struct vm_area_struct **vmap)
+static int __mmap_new_vma(struct mmap_state *map, struct mm_area **vmap)
 {
 	struct vma_iterator *vmi = map->vmi;
 	int error = 0;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	/*
 	 * Determine the object being mapped and call the appropriate
@@ -2415,7 +2415,7 @@ static int __mmap_new_vma(struct mmap_state *map, struct vm_area_struct **vmap)
  * @map: Mapping state.
  * @vma: Merged or newly allocated VMA for the mmap()'d region.
  */
-static void __mmap_complete(struct mmap_state *map, struct vm_area_struct *vma)
+static void __mmap_complete(struct mmap_state *map, struct mm_area *vma)
 {
 	struct mm_struct *mm = map->mm;
 	unsigned long vm_flags = vma->vm_flags;
@@ -2455,7 +2455,7 @@ static unsigned long __mmap_region(struct file *file, unsigned long addr,
 		struct list_head *uf)
 {
 	struct mm_struct *mm = current->mm;
-	struct vm_area_struct *vma = NULL;
+	struct mm_area *vma = NULL;
 	int error;
 	VMA_ITERATOR(vmi, mm, addr);
 	MMAP_STATE(map, mm, &vmi, addr, len, pgoff, vm_flags, file);
@@ -2480,7 +2480,7 @@ static unsigned long __mmap_region(struct file *file, unsigned long addr,
 
 	/* If flags changed, we might be able to merge, so try again. */
 	if (map.retry_merge) {
-		struct vm_area_struct *merged;
+		struct mm_area *merged;
 		VMG_MMAP_STATE(vmg, &map, vma);
 
 		vma_iter_config(map.vmi, map.addr, map.end);
@@ -2573,7 +2573,7 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
  * do not match then create a new anonymous VMA.  Eventually we may be able to
  * do some brk-specific accounting here.
  */
-int do_brk_flags(struct vma_iterator *vmi, struct vm_area_struct *vma,
+int do_brk_flags(struct vma_iterator *vmi, struct mm_area *vma,
 		 unsigned long addr, unsigned long len, unsigned long flags)
 {
 	struct mm_struct *mm = current->mm;
@@ -2657,7 +2657,7 @@ unsigned long unmapped_area(struct vm_unmapped_area_info *info)
 {
 	unsigned long length, gap;
 	unsigned long low_limit, high_limit;
-	struct vm_area_struct *tmp;
+	struct mm_area *tmp;
 	VMA_ITERATOR(vmi, current->mm, 0);
 
 	/* Adjust search length to account for worst case alignment overhead */
@@ -2714,7 +2714,7 @@ unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
 {
 	unsigned long length, gap, gap_end;
 	unsigned long low_limit, high_limit;
-	struct vm_area_struct *tmp;
+	struct mm_area *tmp;
 	VMA_ITERATOR(vmi, current->mm, 0);
 
 	/* Adjust search length to account for worst case alignment overhead */
@@ -2757,7 +2757,7 @@ unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info)
  * update accounting. This is shared with both the
  * grow-up and grow-down cases.
  */
-static int acct_stack_growth(struct vm_area_struct *vma,
+static int acct_stack_growth(struct mm_area *vma,
 			     unsigned long size, unsigned long grow)
 {
 	struct mm_struct *mm = vma->vm_mm;
@@ -2796,10 +2796,10 @@ static int acct_stack_growth(struct vm_area_struct *vma,
  * PA-RISC uses this for its stack.
  * vma is the last one with address > vma->vm_end.  Have to extend vma.
  */
-int expand_upwards(struct vm_area_struct *vma, unsigned long address)
+int expand_upwards(struct mm_area *vma, unsigned long address)
 {
 	struct mm_struct *mm = vma->vm_mm;
-	struct vm_area_struct *next;
+	struct mm_area *next;
 	unsigned long gap_addr;
 	int error = 0;
 	VMA_ITERATOR(vmi, mm, vma->vm_start);
@@ -2882,10 +2882,10 @@ int expand_upwards(struct vm_area_struct *vma, unsigned long address)
  * vma is the first one with address < vma->vm_start.  Have to extend vma.
  * mmap_lock held for writing.
  */
-int expand_downwards(struct vm_area_struct *vma, unsigned long address)
+int expand_downwards(struct mm_area *vma, unsigned long address)
 {
 	struct mm_struct *mm = vma->vm_mm;
-	struct vm_area_struct *prev;
+	struct mm_area *prev;
 	int error = 0;
 	VMA_ITERATOR(vmi, mm, vma->vm_start);
 
diff --git a/mm/vma.h b/mm/vma.h
index 7356ca5a22d3..b488a473fa97 100644
--- a/mm/vma.h
+++ b/mm/vma.h
@@ -11,19 +11,19 @@
  * VMA lock generalization
  */
 struct vma_prepare {
-	struct vm_area_struct *vma;
-	struct vm_area_struct *adj_next;
+	struct mm_area *vma;
+	struct mm_area *adj_next;
 	struct file *file;
 	struct address_space *mapping;
 	struct anon_vma *anon_vma;
-	struct vm_area_struct *insert;
-	struct vm_area_struct *remove;
-	struct vm_area_struct *remove2;
+	struct mm_area *insert;
+	struct mm_area *remove;
+	struct mm_area *remove2;
 };
 
 struct unlink_vma_file_batch {
 	int count;
-	struct vm_area_struct *vmas[8];
+	struct mm_area *vmas[8];
 };
 
 /*
@@ -31,9 +31,9 @@ struct unlink_vma_file_batch {
  */
 struct vma_munmap_struct {
 	struct vma_iterator *vmi;
-	struct vm_area_struct *vma;     /* The first vma to munmap */
-	struct vm_area_struct *prev;    /* vma before the munmap area */
-	struct vm_area_struct *next;    /* vma after the munmap area */
+	struct mm_area *vma;     /* The first vma to munmap */
+	struct mm_area *prev;    /* vma before the munmap area */
+	struct mm_area *next;    /* vma after the munmap area */
 	struct list_head *uf;           /* Userfaultfd list_head */
 	unsigned long start;            /* Aligned start addr (inclusive) */
 	unsigned long end;              /* Aligned end addr (exclusive) */
@@ -79,11 +79,11 @@ struct vma_merge_struct {
 	 *
 	 * next may be assigned by the caller.
 	 */
-	struct vm_area_struct *prev;
-	struct vm_area_struct *middle;
-	struct vm_area_struct *next;
+	struct mm_area *prev;
+	struct mm_area *middle;
+	struct mm_area *next;
 	/* This is the VMA we ultimately target to become the merged VMA. */
-	struct vm_area_struct *target;
+	struct mm_area *target;
 	/*
 	 * Initially, the start, end, pgoff fields are provided by the caller
 	 * and describe the proposed new VMA range, whether modifying an
@@ -145,7 +145,7 @@ static inline bool vmg_nomem(struct vma_merge_struct *vmg)
 }
 
 /* Assumes addr >= vma->vm_start. */
-static inline pgoff_t vma_pgoff_offset(struct vm_area_struct *vma,
+static inline pgoff_t vma_pgoff_offset(struct mm_area *vma,
 				       unsigned long addr)
 {
 	return vma->vm_pgoff + PHYS_PFN(addr - vma->vm_start);
@@ -189,11 +189,11 @@ void validate_mm(struct mm_struct *mm);
 
 __must_check int vma_expand(struct vma_merge_struct *vmg);
 __must_check int vma_shrink(struct vma_iterator *vmi,
-		struct vm_area_struct *vma,
+		struct mm_area *vma,
 		unsigned long start, unsigned long end, pgoff_t pgoff);
 
 static inline int vma_iter_store_gfp(struct vma_iterator *vmi,
-			struct vm_area_struct *vma, gfp_t gfp)
+			struct mm_area *vma, gfp_t gfp)
 
 {
 	if (vmi->mas.status != ma_start &&
@@ -210,7 +210,7 @@ static inline int vma_iter_store_gfp(struct vma_iterator *vmi,
 }
 
 int
-do_vmi_align_munmap(struct vma_iterator *vmi, struct vm_area_struct *vma,
+do_vmi_align_munmap(struct vma_iterator *vmi, struct mm_area *vma,
 		    struct mm_struct *mm, unsigned long start,
 		    unsigned long end, struct list_head *uf, bool unlock);
 
@@ -218,51 +218,51 @@ int do_vmi_munmap(struct vma_iterator *vmi, struct mm_struct *mm,
 		  unsigned long start, size_t len, struct list_head *uf,
 		  bool unlock);
 
-void remove_vma(struct vm_area_struct *vma);
+void remove_vma(struct mm_area *vma);
 
-void unmap_region(struct ma_state *mas, struct vm_area_struct *vma,
-		struct vm_area_struct *prev, struct vm_area_struct *next);
+void unmap_region(struct ma_state *mas, struct mm_area *vma,
+		struct mm_area *prev, struct mm_area *next);
 
 /* We are about to modify the VMA's flags. */
-__must_check struct vm_area_struct
+__must_check struct mm_area
 *vma_modify_flags(struct vma_iterator *vmi,
-		struct vm_area_struct *prev, struct vm_area_struct *vma,
+		struct mm_area *prev, struct mm_area *vma,
 		unsigned long start, unsigned long end,
 		unsigned long new_flags);
 
 /* We are about to modify the VMA's flags and/or anon_name. */
-__must_check struct vm_area_struct
+__must_check struct mm_area
 *vma_modify_flags_name(struct vma_iterator *vmi,
-		       struct vm_area_struct *prev,
-		       struct vm_area_struct *vma,
+		       struct mm_area *prev,
+		       struct mm_area *vma,
 		       unsigned long start,
 		       unsigned long end,
 		       unsigned long new_flags,
 		       struct anon_vma_name *new_name);
 
 /* We are about to modify the VMA's memory policy. */
-__must_check struct vm_area_struct
+__must_check struct mm_area
 *vma_modify_policy(struct vma_iterator *vmi,
-		   struct vm_area_struct *prev,
-		   struct vm_area_struct *vma,
+		   struct mm_area *prev,
+		   struct mm_area *vma,
 		   unsigned long start, unsigned long end,
 		   struct mempolicy *new_pol);
 
 /* We are about to modify the VMA's flags and/or uffd context. */
-__must_check struct vm_area_struct
+__must_check struct mm_area
 *vma_modify_flags_uffd(struct vma_iterator *vmi,
-		       struct vm_area_struct *prev,
-		       struct vm_area_struct *vma,
+		       struct mm_area *prev,
+		       struct mm_area *vma,
 		       unsigned long start, unsigned long end,
 		       unsigned long new_flags,
 		       struct vm_userfaultfd_ctx new_ctx);
 
-__must_check struct vm_area_struct
+__must_check struct mm_area
 *vma_merge_new_range(struct vma_merge_struct *vmg);
 
-__must_check struct vm_area_struct
+__must_check struct mm_area
 *vma_merge_extend(struct vma_iterator *vmi,
-		  struct vm_area_struct *vma,
+		  struct mm_area *vma,
 		  unsigned long delta);
 
 void unlink_file_vma_batch_init(struct unlink_vma_file_batch *vb);
@@ -270,22 +270,22 @@ void unlink_file_vma_batch_init(struct unlink_vma_file_batch *vb);
 void unlink_file_vma_batch_final(struct unlink_vma_file_batch *vb);
 
 void unlink_file_vma_batch_add(struct unlink_vma_file_batch *vb,
-			       struct vm_area_struct *vma);
+			       struct mm_area *vma);
 
-void unlink_file_vma(struct vm_area_struct *vma);
+void unlink_file_vma(struct mm_area *vma);
 
-void vma_link_file(struct vm_area_struct *vma);
+void vma_link_file(struct mm_area *vma);
 
-int vma_link(struct mm_struct *mm, struct vm_area_struct *vma);
+int vma_link(struct mm_struct *mm, struct mm_area *vma);
 
-struct vm_area_struct *copy_vma(struct vm_area_struct **vmap,
+struct mm_area *copy_vma(struct mm_area **vmap,
 	unsigned long addr, unsigned long len, pgoff_t pgoff,
 	bool *need_rmap_locks);
 
-struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *vma);
+struct anon_vma *find_mergeable_anon_vma(struct mm_area *vma);
 
-bool vma_needs_dirty_tracking(struct vm_area_struct *vma);
-bool vma_wants_writenotify(struct vm_area_struct *vma, pgprot_t vm_page_prot);
+bool vma_needs_dirty_tracking(struct mm_area *vma);
+bool vma_wants_writenotify(struct mm_area *vma, pgprot_t vm_page_prot);
 
 int mm_take_all_locks(struct mm_struct *mm);
 void mm_drop_all_locks(struct mm_struct *mm);
@@ -294,13 +294,13 @@ unsigned long mmap_region(struct file *file, unsigned long addr,
 		unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
 		struct list_head *uf);
 
-int do_brk_flags(struct vma_iterator *vmi, struct vm_area_struct *brkvma,
+int do_brk_flags(struct vma_iterator *vmi, struct mm_area *brkvma,
 		 unsigned long addr, unsigned long request, unsigned long flags);
 
 unsigned long unmapped_area(struct vm_unmapped_area_info *info);
 unsigned long unmapped_area_topdown(struct vm_unmapped_area_info *info);
 
-static inline bool vma_wants_manual_pte_write_upgrade(struct vm_area_struct *vma)
+static inline bool vma_wants_manual_pte_write_upgrade(struct mm_area *vma)
 {
 	/*
 	 * We want to check manually if we can change individual PTEs writable
@@ -320,7 +320,7 @@ static inline pgprot_t vm_pgprot_modify(pgprot_t oldprot, unsigned long vm_flags
 }
 #endif
 
-static inline struct vm_area_struct *vma_prev_limit(struct vma_iterator *vmi,
+static inline struct mm_area *vma_prev_limit(struct vma_iterator *vmi,
 						    unsigned long min)
 {
 	return mas_prev(&vmi->mas, min);
@@ -370,13 +370,13 @@ static inline void vma_iter_reset(struct vma_iterator *vmi)
 }
 
 static inline
-struct vm_area_struct *vma_iter_prev_range_limit(struct vma_iterator *vmi, unsigned long min)
+struct mm_area *vma_iter_prev_range_limit(struct vma_iterator *vmi, unsigned long min)
 {
 	return mas_prev_range(&vmi->mas, min);
 }
 
 static inline
-struct vm_area_struct *vma_iter_next_range_limit(struct vma_iterator *vmi, unsigned long max)
+struct mm_area *vma_iter_next_range_limit(struct vma_iterator *vmi, unsigned long max)
 {
 	return mas_next_range(&vmi->mas, max);
 }
@@ -397,7 +397,7 @@ static inline int vma_iter_area_highest(struct vma_iterator *vmi, unsigned long
  * VMA Iterator functions shared between nommu and mmap
  */
 static inline int vma_iter_prealloc(struct vma_iterator *vmi,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	return mas_preallocate(&vmi->mas, vma, GFP_KERNEL);
 }
@@ -407,14 +407,14 @@ static inline void vma_iter_clear(struct vma_iterator *vmi)
 	mas_store_prealloc(&vmi->mas, NULL);
 }
 
-static inline struct vm_area_struct *vma_iter_load(struct vma_iterator *vmi)
+static inline struct mm_area *vma_iter_load(struct vma_iterator *vmi)
 {
 	return mas_walk(&vmi->mas);
 }
 
 /* Store a VMA with preallocated memory */
 static inline void vma_iter_store_overwrite(struct vma_iterator *vmi,
-					    struct vm_area_struct *vma)
+					    struct mm_area *vma)
 {
 	vma_assert_attached(vma);
 
@@ -442,7 +442,7 @@ static inline void vma_iter_store_overwrite(struct vma_iterator *vmi,
 }
 
 static inline void vma_iter_store_new(struct vma_iterator *vmi,
-				      struct vm_area_struct *vma)
+				      struct mm_area *vma)
 {
 	vma_mark_attached(vma);
 	vma_iter_store_overwrite(vmi, vma);
@@ -465,7 +465,7 @@ static inline int vma_iter_bulk_alloc(struct vma_iterator *vmi,
 }
 
 static inline
-struct vm_area_struct *vma_iter_prev_range(struct vma_iterator *vmi)
+struct mm_area *vma_iter_prev_range(struct vma_iterator *vmi)
 {
 	return mas_prev_range(&vmi->mas, 0);
 }
@@ -475,11 +475,11 @@ struct vm_area_struct *vma_iter_prev_range(struct vma_iterator *vmi)
  * if no previous VMA, to index 0.
  */
 static inline
-struct vm_area_struct *vma_iter_next_rewind(struct vma_iterator *vmi,
-		struct vm_area_struct **pprev)
+struct mm_area *vma_iter_next_rewind(struct vma_iterator *vmi,
+		struct mm_area **pprev)
 {
-	struct vm_area_struct *next = vma_next(vmi);
-	struct vm_area_struct *prev = vma_prev(vmi);
+	struct mm_area *next = vma_next(vmi);
+	struct mm_area *prev = vma_prev(vmi);
 
 	/*
 	 * Consider the case where no previous VMA exists. We advance to the
@@ -500,7 +500,7 @@ struct vm_area_struct *vma_iter_next_rewind(struct vma_iterator *vmi,
 
 #ifdef CONFIG_64BIT
 
-static inline bool vma_is_sealed(struct vm_area_struct *vma)
+static inline bool vma_is_sealed(struct mm_area *vma)
 {
 	return (vma->vm_flags & VM_SEALED);
 }
@@ -509,7 +509,7 @@ static inline bool vma_is_sealed(struct vm_area_struct *vma)
  * check if a vma is sealed for modification.
  * return true, if modification is allowed.
  */
-static inline bool can_modify_vma(struct vm_area_struct *vma)
+static inline bool can_modify_vma(struct mm_area *vma)
 {
 	if (unlikely(vma_is_sealed(vma)))
 		return false;
@@ -517,16 +517,16 @@ static inline bool can_modify_vma(struct vm_area_struct *vma)
 	return true;
 }
 
-bool can_modify_vma_madv(struct vm_area_struct *vma, int behavior);
+bool can_modify_vma_madv(struct mm_area *vma, int behavior);
 
 #else
 
-static inline bool can_modify_vma(struct vm_area_struct *vma)
+static inline bool can_modify_vma(struct mm_area *vma)
 {
 	return true;
 }
 
-static inline bool can_modify_vma_madv(struct vm_area_struct *vma, int behavior)
+static inline bool can_modify_vma_madv(struct mm_area *vma, int behavior)
 {
 	return true;
 }
@@ -534,10 +534,10 @@ static inline bool can_modify_vma_madv(struct vm_area_struct *vma, int behavior)
 #endif
 
 #if defined(CONFIG_STACK_GROWSUP)
-int expand_upwards(struct vm_area_struct *vma, unsigned long address);
+int expand_upwards(struct mm_area *vma, unsigned long address);
 #endif
 
-int expand_downwards(struct vm_area_struct *vma, unsigned long address);
+int expand_downwards(struct mm_area *vma, unsigned long address);
 
 int __vm_munmap(unsigned long start, size_t len, bool unlock);
 
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 3ed720a787ec..c3ad2c82c0f9 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -4450,7 +4450,7 @@ long vread_iter(struct iov_iter *iter, const char *addr, size_t count)
  *
  * Similar to remap_pfn_range() (see mm/memory.c)
  */
-int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr,
+int remap_vmalloc_range_partial(struct mm_area *vma, unsigned long uaddr,
 				void *kaddr, unsigned long pgoff,
 				unsigned long size)
 {
@@ -4510,7 +4510,7 @@ int remap_vmalloc_range_partial(struct vm_area_struct *vma, unsigned long uaddr,
  *
  * Similar to remap_pfn_range() (see mm/memory.c)
  */
-int remap_vmalloc_range(struct vm_area_struct *vma, void *addr,
+int remap_vmalloc_range(struct mm_area *vma, void *addr,
 						unsigned long pgoff)
 {
 	return remap_vmalloc_range_partial(vma, vma->vm_start,
diff --git a/mm/vmscan.c b/mm/vmscan.c
index b620d74b0f66..9e629fea2e9a 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -3322,7 +3322,7 @@ static void reset_batch_size(struct lru_gen_mm_walk *walk)
 static int should_skip_vma(unsigned long start, unsigned long end, struct mm_walk *args)
 {
 	struct address_space *mapping;
-	struct vm_area_struct *vma = args->vma;
+	struct mm_area *vma = args->vma;
 	struct lru_gen_mm_walk *walk = args->private;
 
 	if (!vma_is_accessible(vma))
@@ -3391,7 +3391,7 @@ static bool get_next_vma(unsigned long mask, unsigned long size, struct mm_walk
 	return false;
 }
 
-static unsigned long get_pte_pfn(pte_t pte, struct vm_area_struct *vma, unsigned long addr,
+static unsigned long get_pte_pfn(pte_t pte, struct mm_area *vma, unsigned long addr,
 				 struct pglist_data *pgdat)
 {
 	unsigned long pfn = pte_pfn(pte);
@@ -3416,7 +3416,7 @@ static unsigned long get_pte_pfn(pte_t pte, struct vm_area_struct *vma, unsigned
 	return pfn;
 }
 
-static unsigned long get_pmd_pfn(pmd_t pmd, struct vm_area_struct *vma, unsigned long addr,
+static unsigned long get_pmd_pfn(pmd_t pmd, struct mm_area *vma, unsigned long addr,
 				 struct pglist_data *pgdat)
 {
 	unsigned long pfn = pmd_pfn(pmd);
@@ -3569,7 +3569,7 @@ static bool walk_pte_range(pmd_t *pmd, unsigned long start, unsigned long end,
 	return suitable_to_scan(total, young);
 }
 
-static void walk_pmd_range_locked(pud_t *pud, unsigned long addr, struct vm_area_struct *vma,
+static void walk_pmd_range_locked(pud_t *pud, unsigned long addr, struct mm_area *vma,
 				  struct mm_walk *args, unsigned long *bitmap, unsigned long *first)
 {
 	int i;
@@ -3664,7 +3664,7 @@ static void walk_pmd_range(pud_t *pud, unsigned long start, unsigned long end,
 	pmd_t *pmd;
 	unsigned long next;
 	unsigned long addr;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	DECLARE_BITMAP(bitmap, MIN_LRU_BATCH);
 	unsigned long first = -1;
 	struct lru_gen_mm_walk *walk = args->private;
@@ -4193,7 +4193,7 @@ bool lru_gen_look_around(struct page_vma_mapped_walk *pvmw)
 	int young = 1;
 	pte_t *pte = pvmw->pte;
 	unsigned long addr = pvmw->address;
-	struct vm_area_struct *vma = pvmw->vma;
+	struct mm_area *vma = pvmw->vma;
 	struct folio *folio = pfn_folio(pvmw->pfn);
 	struct mem_cgroup *memcg = folio_memcg(folio);
 	struct pglist_data *pgdat = folio_pgdat(folio);
diff --git a/net/core/sock.c b/net/core/sock.c
index 323892066def..7d9b9ea0014d 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -3467,7 +3467,7 @@ int sock_no_recvmsg(struct socket *sock, struct msghdr *m, size_t len,
 }
 EXPORT_SYMBOL(sock_no_recvmsg);
 
-int sock_no_mmap(struct file *file, struct socket *sock, struct vm_area_struct *vma)
+int sock_no_mmap(struct file *file, struct socket *sock, struct mm_area *vma)
 {
 	/* Mirror missing mmap method error code */
 	return -ENODEV;
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index ea8de00f669d..f51b18d0fac2 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -1801,7 +1801,7 @@ static const struct vm_operations_struct tcp_vm_ops = {
 };
 
 int tcp_mmap(struct file *file, struct socket *sock,
-	     struct vm_area_struct *vma)
+	     struct mm_area *vma)
 {
 	if (vma->vm_flags & (VM_WRITE | VM_EXEC))
 		return -EPERM;
@@ -1997,7 +1997,7 @@ static int tcp_zc_handle_leftover(struct tcp_zerocopy_receive *zc,
 	return zc->copybuf_len < 0 ? 0 : copylen;
 }
 
-static int tcp_zerocopy_vm_insert_batch_error(struct vm_area_struct *vma,
+static int tcp_zerocopy_vm_insert_batch_error(struct mm_area *vma,
 					      struct page **pending_pages,
 					      unsigned long pages_remaining,
 					      unsigned long *address,
@@ -2045,7 +2045,7 @@ static int tcp_zerocopy_vm_insert_batch_error(struct vm_area_struct *vma,
 	return err;
 }
 
-static int tcp_zerocopy_vm_insert_batch(struct vm_area_struct *vma,
+static int tcp_zerocopy_vm_insert_batch(struct mm_area *vma,
 					struct page **pages,
 					unsigned int pages_to_map,
 					unsigned long *address,
@@ -2104,11 +2104,11 @@ static void tcp_zc_finalize_rx_tstamp(struct sock *sk,
 	}
 }
 
-static struct vm_area_struct *find_tcp_vma(struct mm_struct *mm,
+static struct mm_area *find_tcp_vma(struct mm_struct *mm,
 					   unsigned long address,
 					   bool *mmap_locked)
 {
-	struct vm_area_struct *vma = lock_vma_under_rcu(mm, address);
+	struct mm_area *vma = lock_vma_under_rcu(mm, address);
 
 	if (vma) {
 		if (vma->vm_ops != &tcp_vm_ops) {
@@ -2141,7 +2141,7 @@ static int tcp_zerocopy_receive(struct sock *sk,
 	struct tcp_sock *tp = tcp_sk(sk);
 	const skb_frag_t *frags = NULL;
 	unsigned int pages_to_map = 0;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	struct sk_buff *skb = NULL;
 	u32 seq = tp->copied_seq;
 	u32 total_bytes_to_map;
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 3e9ddf72cd03..c1ac0ed67f71 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -4358,7 +4358,7 @@ static __poll_t packet_poll(struct file *file, struct socket *sock,
  * for user mmaps.
  */
 
-static void packet_mm_open(struct vm_area_struct *vma)
+static void packet_mm_open(struct mm_area *vma)
 {
 	struct file *file = vma->vm_file;
 	struct socket *sock = file->private_data;
@@ -4368,7 +4368,7 @@ static void packet_mm_open(struct vm_area_struct *vma)
 		atomic_long_inc(&pkt_sk(sk)->mapped);
 }
 
-static void packet_mm_close(struct vm_area_struct *vma)
+static void packet_mm_close(struct mm_area *vma)
 {
 	struct file *file = vma->vm_file;
 	struct socket *sock = file->private_data;
@@ -4619,7 +4619,7 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u,
 }
 
 static int packet_mmap(struct file *file, struct socket *sock,
-		struct vm_area_struct *vma)
+		struct mm_area *vma)
 {
 	struct sock *sk = sock->sk;
 	struct packet_sock *po = pkt_sk(sk);
diff --git a/net/socket.c b/net/socket.c
index 9a0e720f0859..796d8811c0cc 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -119,7 +119,7 @@ unsigned int sysctl_net_busy_poll __read_mostly;
 
 static ssize_t sock_read_iter(struct kiocb *iocb, struct iov_iter *to);
 static ssize_t sock_write_iter(struct kiocb *iocb, struct iov_iter *from);
-static int sock_mmap(struct file *file, struct vm_area_struct *vma);
+static int sock_mmap(struct file *file, struct mm_area *vma);
 
 static int sock_close(struct inode *inode, struct file *file);
 static __poll_t sock_poll(struct file *file,
@@ -1379,7 +1379,7 @@ static __poll_t sock_poll(struct file *file, poll_table *wait)
 	return ops->poll(file, sock, wait) | flag;
 }
 
-static int sock_mmap(struct file *file, struct vm_area_struct *vma)
+static int sock_mmap(struct file *file, struct mm_area *vma)
 {
 	struct socket *sock = file->private_data;
 
diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c
index 5696af45bcf7..13d7febb2286 100644
--- a/net/xdp/xsk.c
+++ b/net/xdp/xsk.c
@@ -1595,7 +1595,7 @@ static int xsk_getsockopt(struct socket *sock, int level, int optname,
 }
 
 static int xsk_mmap(struct file *file, struct socket *sock,
-		    struct vm_area_struct *vma)
+		    struct mm_area *vma)
 {
 	loff_t offset = (loff_t)vma->vm_pgoff << PAGE_SHIFT;
 	unsigned long size = vma->vm_end - vma->vm_start;
diff --git a/samples/ftrace/ftrace-direct-too.c b/samples/ftrace/ftrace-direct-too.c
index 3d0fa260332d..6c77296cf30b 100644
--- a/samples/ftrace/ftrace-direct-too.c
+++ b/samples/ftrace/ftrace-direct-too.c
@@ -7,10 +7,10 @@
 #include <asm/asm-offsets.h>
 #endif
 
-extern void my_direct_func(struct vm_area_struct *vma, unsigned long address,
+extern void my_direct_func(struct mm_area *vma, unsigned long address,
 			   unsigned int flags, struct pt_regs *regs);
 
-void my_direct_func(struct vm_area_struct *vma, unsigned long address,
+void my_direct_func(struct mm_area *vma, unsigned long address,
 		    unsigned int flags, struct pt_regs *regs)
 {
 	trace_printk("handle mm fault vma=%p address=%lx flags=%x regs=%p\n",
diff --git a/samples/vfio-mdev/mbochs.c b/samples/vfio-mdev/mbochs.c
index 18623ba666e3..4b6121f12c27 100644
--- a/samples/vfio-mdev/mbochs.c
+++ b/samples/vfio-mdev/mbochs.c
@@ -777,7 +777,7 @@ static void mbochs_put_pages(struct mdev_state *mdev_state)
 
 static vm_fault_t mbochs_region_vm_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct mdev_state *mdev_state = vma->vm_private_data;
 	pgoff_t page_offset = (vmf->address - vma->vm_start) >> PAGE_SHIFT;
 
@@ -795,7 +795,7 @@ static const struct vm_operations_struct mbochs_region_vm_ops = {
 	.fault = mbochs_region_vm_fault,
 };
 
-static int mbochs_mmap(struct vfio_device *vdev, struct vm_area_struct *vma)
+static int mbochs_mmap(struct vfio_device *vdev, struct mm_area *vma)
 {
 	struct mdev_state *mdev_state =
 		container_of(vdev, struct mdev_state, vdev);
@@ -816,7 +816,7 @@ static int mbochs_mmap(struct vfio_device *vdev, struct vm_area_struct *vma)
 
 static vm_fault_t mbochs_dmabuf_vm_fault(struct vm_fault *vmf)
 {
-	struct vm_area_struct *vma = vmf->vma;
+	struct mm_area *vma = vmf->vma;
 	struct mbochs_dmabuf *dmabuf = vma->vm_private_data;
 
 	if (WARN_ON(vmf->pgoff >= dmabuf->pagecount))
@@ -831,7 +831,7 @@ static const struct vm_operations_struct mbochs_dmabuf_vm_ops = {
 	.fault = mbochs_dmabuf_vm_fault,
 };
 
-static int mbochs_mmap_dmabuf(struct dma_buf *buf, struct vm_area_struct *vma)
+static int mbochs_mmap_dmabuf(struct dma_buf *buf, struct mm_area *vma)
 {
 	struct mbochs_dmabuf *dmabuf = buf->priv;
 	struct device *dev = mdev_dev(dmabuf->mdev_state->mdev);
diff --git a/samples/vfio-mdev/mdpy.c b/samples/vfio-mdev/mdpy.c
index 8104831ae125..8f939e826acf 100644
--- a/samples/vfio-mdev/mdpy.c
+++ b/samples/vfio-mdev/mdpy.c
@@ -418,7 +418,7 @@ static ssize_t mdpy_write(struct vfio_device *vdev, const char __user *buf,
 	return -EFAULT;
 }
 
-static int mdpy_mmap(struct vfio_device *vdev, struct vm_area_struct *vma)
+static int mdpy_mmap(struct vfio_device *vdev, struct mm_area *vma)
 {
 	struct mdev_state *mdev_state =
 		container_of(vdev, struct mdev_state, vdev);
diff --git a/scripts/coccinelle/api/vma_pages.cocci b/scripts/coccinelle/api/vma_pages.cocci
index 10511b9bf35e..96c7790dff71 100644
--- a/scripts/coccinelle/api/vma_pages.cocci
+++ b/scripts/coccinelle/api/vma_pages.cocci
@@ -16,7 +16,7 @@ virtual report
 //----------------------------------------------------------
 
 @r_context depends on context && !patch && !org && !report@
-struct vm_area_struct *vma;
+struct mm_area *vma;
 @@
 
 * (vma->vm_end - vma->vm_start) >> PAGE_SHIFT
@@ -26,7 +26,7 @@ struct vm_area_struct *vma;
 //----------------------------------------------------------
 
 @r_patch depends on !context && patch && !org && !report@
-struct vm_area_struct *vma;
+struct mm_area *vma;
 @@
 
 - ((vma->vm_end - vma->vm_start) >> PAGE_SHIFT)
@@ -37,7 +37,7 @@ struct vm_area_struct *vma;
 //----------------------------------------------------------
 
 @r_org depends on !context && !patch && (org || report)@
-struct vm_area_struct *vma;
+struct mm_area *vma;
 position p;
 @@
 
diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c
index 7952e8cab353..cadd2fdbf01d 100644
--- a/security/apparmor/lsm.c
+++ b/security/apparmor/lsm.c
@@ -585,7 +585,7 @@ static int apparmor_mmap_file(struct file *file, unsigned long reqprot,
 	return common_mmap(OP_FMMAP, file, prot, flags, GFP_ATOMIC);
 }
 
-static int apparmor_file_mprotect(struct vm_area_struct *vma,
+static int apparmor_file_mprotect(struct mm_area *vma,
 				  unsigned long reqprot, unsigned long prot)
 {
 	return common_mmap(OP_FMPROT, vma->vm_file, prot,
diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c
index f3e7ac513db3..a6e25bb8dc0b 100644
--- a/security/integrity/ima/ima_main.c
+++ b/security/integrity/ima/ima_main.c
@@ -478,7 +478,7 @@ static int ima_file_mmap(struct file *file, unsigned long reqprot,
 
 /**
  * ima_file_mprotect - based on policy, limit mprotect change
- * @vma: vm_area_struct protection is set to
+ * @vma: mm_area protection is set to
  * @reqprot: protection requested by the application
  * @prot: protection that will be applied by the kernel
  *
@@ -490,7 +490,7 @@ static int ima_file_mmap(struct file *file, unsigned long reqprot,
  *
  * On mprotect change success, return 0.  On failure, return -EACESS.
  */
-static int ima_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot,
+static int ima_file_mprotect(struct mm_area *vma, unsigned long reqprot,
 			     unsigned long prot)
 {
 	struct ima_template_desc *template = NULL;
diff --git a/security/ipe/hooks.c b/security/ipe/hooks.c
index d0323b81cd8f..5882e26563be 100644
--- a/security/ipe/hooks.c
+++ b/security/ipe/hooks.c
@@ -77,7 +77,7 @@ int ipe_mmap_file(struct file *f, unsigned long reqprot __always_unused,
  * * %0		- Success
  * * %-EACCES	- Did not pass IPE policy
  */
-int ipe_file_mprotect(struct vm_area_struct *vma,
+int ipe_file_mprotect(struct mm_area *vma,
 		      unsigned long reqprot __always_unused,
 		      unsigned long prot)
 {
diff --git a/security/ipe/hooks.h b/security/ipe/hooks.h
index 38d4a387d039..3b4b2f502809 100644
--- a/security/ipe/hooks.h
+++ b/security/ipe/hooks.h
@@ -27,7 +27,7 @@ int ipe_bprm_check_security(struct linux_binprm *bprm);
 int ipe_mmap_file(struct file *f, unsigned long reqprot, unsigned long prot,
 		  unsigned long flags);
 
-int ipe_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot,
+int ipe_file_mprotect(struct mm_area *vma, unsigned long reqprot,
 		      unsigned long prot);
 
 int ipe_kernel_read_file(struct file *file, enum kernel_read_file_id id,
diff --git a/security/security.c b/security/security.c
index fb57e8fddd91..1026b02ee7cf 100644
--- a/security/security.c
+++ b/security/security.c
@@ -3006,7 +3006,7 @@ int security_mmap_addr(unsigned long addr)
  *
  * Return: Returns 0 if permission is granted.
  */
-int security_file_mprotect(struct vm_area_struct *vma, unsigned long reqprot,
+int security_file_mprotect(struct mm_area *vma, unsigned long reqprot,
 			   unsigned long prot)
 {
 	return call_int_hook(file_mprotect, vma, reqprot, prot);
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index e7a7dcab81db..28b458a22af8 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -3848,7 +3848,7 @@ static int selinux_mmap_file(struct file *file,
 				   (flags & MAP_TYPE) == MAP_SHARED);
 }
 
-static int selinux_file_mprotect(struct vm_area_struct *vma,
+static int selinux_file_mprotect(struct mm_area *vma,
 				 unsigned long reqprot __always_unused,
 				 unsigned long prot)
 {
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
index 47480eb2189b..84ed683ce903 100644
--- a/security/selinux/selinuxfs.c
+++ b/security/selinux/selinuxfs.c
@@ -240,7 +240,7 @@ static ssize_t sel_read_handle_status(struct file *filp, char __user *buf,
 }
 
 static int sel_mmap_handle_status(struct file *filp,
-				  struct vm_area_struct *vma)
+				  struct mm_area *vma)
 {
 	struct page    *status = filp->private_data;
 	unsigned long	size = vma->vm_end - vma->vm_start;
@@ -465,7 +465,7 @@ static const struct vm_operations_struct sel_mmap_policy_ops = {
 	.page_mkwrite = sel_mmap_policy_fault,
 };
 
-static int sel_mmap_policy(struct file *filp, struct vm_area_struct *vma)
+static int sel_mmap_policy(struct file *filp, struct mm_area *vma)
 {
 	if (vma->vm_flags & VM_SHARED) {
 		/* do not allow mprotect to make mapping writable */
diff --git a/sound/core/compress_offload.c b/sound/core/compress_offload.c
index 840bb9cfe789..84e86bd99ead 100644
--- a/sound/core/compress_offload.c
+++ b/sound/core/compress_offload.c
@@ -389,7 +389,7 @@ static ssize_t snd_compr_read(struct file *f, char __user *buf,
 	return retval;
 }
 
-static int snd_compr_mmap(struct file *f, struct vm_area_struct *vma)
+static int snd_compr_mmap(struct file *f, struct mm_area *vma)
 {
 	return -ENXIO;
 }
diff --git a/sound/core/hwdep.c b/sound/core/hwdep.c
index 09200df2932c..ac5cf0c98ec4 100644
--- a/sound/core/hwdep.c
+++ b/sound/core/hwdep.c
@@ -253,7 +253,7 @@ static long snd_hwdep_ioctl(struct file * file, unsigned int cmd,
 	return -ENOTTY;
 }
 
-static int snd_hwdep_mmap(struct file * file, struct vm_area_struct * vma)
+static int snd_hwdep_mmap(struct file * file, struct mm_area * vma)
 {
 	struct snd_hwdep *hw = file->private_data;
 	if (hw->ops.mmap)
diff --git a/sound/core/info.c b/sound/core/info.c
index 1f5b8a3d9e3b..2d80eb13ab7e 100644
--- a/sound/core/info.c
+++ b/sound/core/info.c
@@ -211,7 +211,7 @@ static long snd_info_entry_ioctl(struct file *file, unsigned int cmd,
 				   file, cmd, arg);
 }
 
-static int snd_info_entry_mmap(struct file *file, struct vm_area_struct *vma)
+static int snd_info_entry_mmap(struct file *file, struct mm_area *vma)
 {
 	struct inode *inode = file_inode(file);
 	struct snd_info_private_data *data;
diff --git a/sound/core/init.c b/sound/core/init.c
index 114fb87de990..6c357c892dc4 100644
--- a/sound/core/init.c
+++ b/sound/core/init.c
@@ -451,7 +451,7 @@ static long snd_disconnect_ioctl(struct file *file,
 	return -ENODEV;
 }
 
-static int snd_disconnect_mmap(struct file *file, struct vm_area_struct *vma)
+static int snd_disconnect_mmap(struct file *file, struct mm_area *vma)
 {
 	return -ENODEV;
 }
diff --git a/sound/core/memalloc.c b/sound/core/memalloc.c
index b3853583d2ae..2c5f64a1c8fe 100644
--- a/sound/core/memalloc.c
+++ b/sound/core/memalloc.c
@@ -25,7 +25,7 @@ struct snd_malloc_ops {
 	struct page *(*get_page)(struct snd_dma_buffer *dmab, size_t offset);
 	unsigned int (*get_chunk_size)(struct snd_dma_buffer *dmab,
 				       unsigned int ofs, unsigned int size);
-	int (*mmap)(struct snd_dma_buffer *dmab, struct vm_area_struct *area);
+	int (*mmap)(struct snd_dma_buffer *dmab, struct mm_area *area);
 	void (*sync)(struct snd_dma_buffer *dmab, enum snd_dma_sync_mode mode);
 };
 
@@ -189,7 +189,7 @@ EXPORT_SYMBOL_GPL(snd_devm_alloc_dir_pages);
  * Return: zero if successful, or a negative error code
  */
 int snd_dma_buffer_mmap(struct snd_dma_buffer *dmab,
-			struct vm_area_struct *area)
+			struct mm_area *area)
 {
 	const struct snd_malloc_ops *ops;
 
@@ -334,7 +334,7 @@ static void snd_dma_continuous_free(struct snd_dma_buffer *dmab)
 }
 
 static int snd_dma_continuous_mmap(struct snd_dma_buffer *dmab,
-				   struct vm_area_struct *area)
+				   struct mm_area *area)
 {
 	return remap_pfn_range(area, area->vm_start,
 			       dmab->addr >> PAGE_SHIFT,
@@ -362,7 +362,7 @@ static void snd_dma_vmalloc_free(struct snd_dma_buffer *dmab)
 }
 
 static int snd_dma_vmalloc_mmap(struct snd_dma_buffer *dmab,
-				struct vm_area_struct *area)
+				struct mm_area *area)
 {
 	return remap_vmalloc_range(area, dmab->area, 0);
 }
@@ -451,7 +451,7 @@ static void snd_dma_iram_free(struct snd_dma_buffer *dmab)
 }
 
 static int snd_dma_iram_mmap(struct snd_dma_buffer *dmab,
-			     struct vm_area_struct *area)
+			     struct mm_area *area)
 {
 	area->vm_page_prot = pgprot_writecombine(area->vm_page_prot);
 	return remap_pfn_range(area, area->vm_start,
@@ -481,7 +481,7 @@ static void snd_dma_dev_free(struct snd_dma_buffer *dmab)
 }
 
 static int snd_dma_dev_mmap(struct snd_dma_buffer *dmab,
-			    struct vm_area_struct *area)
+			    struct mm_area *area)
 {
 	return dma_mmap_coherent(dmab->dev.dev, area,
 				 dmab->area, dmab->addr, dmab->bytes);
@@ -520,7 +520,7 @@ static void snd_dma_wc_free(struct snd_dma_buffer *dmab)
 }
 
 static int snd_dma_wc_mmap(struct snd_dma_buffer *dmab,
-			   struct vm_area_struct *area)
+			   struct mm_area *area)
 {
 	area->vm_page_prot = pgprot_writecombine(area->vm_page_prot);
 	return dma_mmap_coherent(dmab->dev.dev, area,
@@ -538,7 +538,7 @@ static void snd_dma_wc_free(struct snd_dma_buffer *dmab)
 }
 
 static int snd_dma_wc_mmap(struct snd_dma_buffer *dmab,
-			   struct vm_area_struct *area)
+			   struct mm_area *area)
 {
 	return dma_mmap_wc(dmab->dev.dev, area,
 			   dmab->area, dmab->addr, dmab->bytes);
@@ -585,7 +585,7 @@ static void snd_dma_noncontig_free(struct snd_dma_buffer *dmab)
 }
 
 static int snd_dma_noncontig_mmap(struct snd_dma_buffer *dmab,
-				  struct vm_area_struct *area)
+				  struct mm_area *area)
 {
 	return dma_mmap_noncontiguous(dmab->dev.dev, area,
 				      dmab->bytes, dmab->private_data);
@@ -789,7 +789,7 @@ static void snd_dma_sg_fallback_free(struct snd_dma_buffer *dmab)
 }
 
 static int snd_dma_sg_fallback_mmap(struct snd_dma_buffer *dmab,
-				    struct vm_area_struct *area)
+				    struct mm_area *area)
 {
 	struct snd_dma_sg_fallback *sgbuf = dmab->private_data;
 
@@ -849,7 +849,7 @@ static void snd_dma_noncoherent_free(struct snd_dma_buffer *dmab)
 }
 
 static int snd_dma_noncoherent_mmap(struct snd_dma_buffer *dmab,
-				    struct vm_area_struct *area)
+				    struct mm_area *area)
 {
 	area->vm_page_prot = vm_get_page_prot(area->vm_flags);
 	return dma_mmap_pages(dmab->dev.dev, area,
diff --git a/sound/core/oss/pcm_oss.c b/sound/core/oss/pcm_oss.c
index 4683b9139c56..884e96ea9cca 100644
--- a/sound/core/oss/pcm_oss.c
+++ b/sound/core/oss/pcm_oss.c
@@ -2867,7 +2867,7 @@ static __poll_t snd_pcm_oss_poll(struct file *file, poll_table * wait)
 	return mask;
 }
 
-static int snd_pcm_oss_mmap(struct file *file, struct vm_area_struct *area)
+static int snd_pcm_oss_mmap(struct file *file, struct mm_area *area)
 {
 	struct snd_pcm_oss_file *pcm_oss_file;
 	struct snd_pcm_substream *substream = NULL;
diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 6c2b6a62d9d2..415c3dec027f 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -3668,7 +3668,7 @@ static const struct vm_operations_struct snd_pcm_vm_ops_status =
 };
 
 static int snd_pcm_mmap_status(struct snd_pcm_substream *substream, struct file *file,
-			       struct vm_area_struct *area)
+			       struct mm_area *area)
 {
 	long size;
 	if (!(area->vm_flags & VM_READ))
@@ -3706,7 +3706,7 @@ static const struct vm_operations_struct snd_pcm_vm_ops_control =
 };
 
 static int snd_pcm_mmap_control(struct snd_pcm_substream *substream, struct file *file,
-				struct vm_area_struct *area)
+				struct mm_area *area)
 {
 	long size;
 	if (!(area->vm_flags & VM_READ))
@@ -3762,12 +3762,12 @@ static bool pcm_control_mmap_allowed(struct snd_pcm_file *pcm_file)
 #define pcm_control_mmap_allowed(pcm_file)	false
 
 static int snd_pcm_mmap_status(struct snd_pcm_substream *substream, struct file *file,
-			       struct vm_area_struct *area)
+			       struct mm_area *area)
 {
 	return -ENXIO;
 }
 static int snd_pcm_mmap_control(struct snd_pcm_substream *substream, struct file *file,
-				struct vm_area_struct *area)
+				struct mm_area *area)
 {
 	return -ENXIO;
 }
@@ -3776,7 +3776,7 @@ static int snd_pcm_mmap_control(struct snd_pcm_substream *substream, struct file
 /*
  * snd_pcm_mmap_data_open - increase the mmap counter
  */
-static void snd_pcm_mmap_data_open(struct vm_area_struct *area)
+static void snd_pcm_mmap_data_open(struct mm_area *area)
 {
 	struct snd_pcm_substream *substream = area->vm_private_data;
 
@@ -3786,7 +3786,7 @@ static void snd_pcm_mmap_data_open(struct vm_area_struct *area)
 /*
  * snd_pcm_mmap_data_close - decrease the mmap counter
  */
-static void snd_pcm_mmap_data_close(struct vm_area_struct *area)
+static void snd_pcm_mmap_data_close(struct mm_area *area)
 {
 	struct snd_pcm_substream *substream = area->vm_private_data;
 
@@ -3852,7 +3852,7 @@ static const struct vm_operations_struct snd_pcm_vm_ops_data_fault = {
  * Return: zero if successful, or a negative error code
  */
 int snd_pcm_lib_default_mmap(struct snd_pcm_substream *substream,
-			     struct vm_area_struct *area)
+			     struct mm_area *area)
 {
 	vm_flags_set(area, VM_DONTEXPAND | VM_DONTDUMP);
 	if (!substream->ops->page &&
@@ -3880,7 +3880,7 @@ EXPORT_SYMBOL_GPL(snd_pcm_lib_default_mmap);
  * Return: zero if successful, or a negative error code
  */
 int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream,
-			   struct vm_area_struct *area)
+			   struct mm_area *area)
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 
@@ -3894,7 +3894,7 @@ EXPORT_SYMBOL(snd_pcm_lib_mmap_iomem);
  * mmap DMA buffer
  */
 int snd_pcm_mmap_data(struct snd_pcm_substream *substream, struct file *file,
-		      struct vm_area_struct *area)
+		      struct mm_area *area)
 {
 	struct snd_pcm_runtime *runtime;
 	long size;
@@ -3937,7 +3937,7 @@ int snd_pcm_mmap_data(struct snd_pcm_substream *substream, struct file *file,
 }
 EXPORT_SYMBOL(snd_pcm_mmap_data);
 
-static int snd_pcm_mmap(struct file *file, struct vm_area_struct *area)
+static int snd_pcm_mmap(struct file *file, struct mm_area *area)
 {
 	struct snd_pcm_file * pcm_file;
 	struct snd_pcm_substream *substream;	
diff --git a/sound/soc/fsl/fsl_asrc_m2m.c b/sound/soc/fsl/fsl_asrc_m2m.c
index f46881f71e43..32356e92f2ae 100644
--- a/sound/soc/fsl/fsl_asrc_m2m.c
+++ b/sound/soc/fsl/fsl_asrc_m2m.c
@@ -401,7 +401,7 @@ static int fsl_asrc_m2m_comp_set_params(struct snd_compr_stream *stream,
 	return 0;
 }
 
-static int fsl_asrc_m2m_mmap(struct dma_buf *dmabuf, struct vm_area_struct *vma)
+static int fsl_asrc_m2m_mmap(struct dma_buf *dmabuf, struct mm_area *vma)
 {
 	struct snd_dma_buffer *dmab = dmabuf->priv;
 
diff --git a/sound/soc/intel/avs/pcm.c b/sound/soc/intel/avs/pcm.c
index dac463390da1..d595f2ef22a8 100644
--- a/sound/soc/intel/avs/pcm.c
+++ b/sound/soc/intel/avs/pcm.c
@@ -1240,7 +1240,7 @@ avs_component_pointer(struct snd_soc_component *component, struct snd_pcm_substr
 
 static int avs_component_mmap(struct snd_soc_component *component,
 			      struct snd_pcm_substream *substream,
-			      struct vm_area_struct *vma)
+			      struct mm_area *vma)
 {
 	return snd_pcm_lib_default_mmap(substream, vma);
 }
diff --git a/sound/soc/loongson/loongson_dma.c b/sound/soc/loongson/loongson_dma.c
index 20e4a0641340..2e05bc1683bd 100644
--- a/sound/soc/loongson/loongson_dma.c
+++ b/sound/soc/loongson/loongson_dma.c
@@ -295,7 +295,7 @@ static int loongson_pcm_close(struct snd_soc_component *component,
 
 static int loongson_pcm_mmap(struct snd_soc_component *component,
 			     struct snd_pcm_substream *substream,
-			     struct vm_area_struct *vma)
+			     struct mm_area *vma)
 {
 	return remap_pfn_range(vma, vma->vm_start,
 			substream->dma_buffer.addr >> PAGE_SHIFT,
diff --git a/sound/soc/pxa/mmp-sspa.c b/sound/soc/pxa/mmp-sspa.c
index 73f36c9dd35c..bbb0f3a15c39 100644
--- a/sound/soc/pxa/mmp-sspa.c
+++ b/sound/soc/pxa/mmp-sspa.c
@@ -402,7 +402,7 @@ static const struct snd_dmaengine_pcm_config mmp_pcm_config = {
 
 static int mmp_pcm_mmap(struct snd_soc_component *component,
 			struct snd_pcm_substream *substream,
-			struct vm_area_struct *vma)
+			struct mm_area *vma)
 {
 	vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP);
 	vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
diff --git a/sound/soc/qcom/lpass-platform.c b/sound/soc/qcom/lpass-platform.c
index 9946f12254b3..bf8cd80fcf5a 100644
--- a/sound/soc/qcom/lpass-platform.c
+++ b/sound/soc/qcom/lpass-platform.c
@@ -894,7 +894,7 @@ static snd_pcm_uframes_t lpass_platform_pcmops_pointer(
 }
 
 static int lpass_platform_cdc_dma_mmap(struct snd_pcm_substream *substream,
-				       struct vm_area_struct *vma)
+				       struct mm_area *vma)
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	unsigned long size, offset;
@@ -910,7 +910,7 @@ static int lpass_platform_cdc_dma_mmap(struct snd_pcm_substream *substream,
 
 static int lpass_platform_pcmops_mmap(struct snd_soc_component *component,
 				      struct snd_pcm_substream *substream,
-				      struct vm_area_struct *vma)
+				      struct mm_area *vma)
 {
 	struct snd_soc_pcm_runtime *soc_runtime = snd_soc_substream_to_rtd(substream);
 	struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(soc_runtime, 0);
diff --git a/sound/soc/qcom/qdsp6/q6apm-dai.c b/sound/soc/qcom/qdsp6/q6apm-dai.c
index 2cd522108221..6a9ef02b5ab6 100644
--- a/sound/soc/qcom/qdsp6/q6apm-dai.c
+++ b/sound/soc/qcom/qdsp6/q6apm-dai.c
@@ -739,7 +739,7 @@ static int q6apm_dai_compr_set_metadata(struct snd_soc_component *component,
 
 static int q6apm_dai_compr_mmap(struct snd_soc_component *component,
 				struct snd_compr_stream *stream,
-				struct vm_area_struct *vma)
+				struct mm_area *vma)
 {
 	struct snd_compr_runtime *runtime = stream->runtime;
 	struct q6apm_dai_rtd *prtd = runtime->private_data;
diff --git a/sound/soc/qcom/qdsp6/q6asm-dai.c b/sound/soc/qcom/qdsp6/q6asm-dai.c
index a400c9a31fea..7d382c459845 100644
--- a/sound/soc/qcom/qdsp6/q6asm-dai.c
+++ b/sound/soc/qcom/qdsp6/q6asm-dai.c
@@ -1114,7 +1114,7 @@ static int q6asm_compr_copy(struct snd_soc_component *component,
 
 static int q6asm_dai_compr_mmap(struct snd_soc_component *component,
 				struct snd_compr_stream *stream,
-				struct vm_area_struct *vma)
+				struct mm_area *vma)
 {
 	struct snd_compr_runtime *runtime = stream->runtime;
 	struct q6asm_dai_rtd *prtd = runtime->private_data;
diff --git a/sound/soc/samsung/idma.c b/sound/soc/samsung/idma.c
index 402ccadad46c..618cc682b223 100644
--- a/sound/soc/samsung/idma.c
+++ b/sound/soc/samsung/idma.c
@@ -240,7 +240,7 @@ idma_pointer(struct snd_soc_component *component,
 
 static int idma_mmap(struct snd_soc_component *component,
 		     struct snd_pcm_substream *substream,
-	struct vm_area_struct *vma)
+	struct mm_area *vma)
 {
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	unsigned long size, offset;
diff --git a/sound/soc/soc-component.c b/sound/soc/soc-component.c
index 25f5e543ae8d..019eabf1f618 100644
--- a/sound/soc/soc-component.c
+++ b/sound/soc/soc-component.c
@@ -1095,7 +1095,7 @@ struct page *snd_soc_pcm_component_page(struct snd_pcm_substream *substream,
 }
 
 int snd_soc_pcm_component_mmap(struct snd_pcm_substream *substream,
-			       struct vm_area_struct *vma)
+			       struct mm_area *vma)
 {
 	struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
 	struct snd_soc_component *component;
diff --git a/sound/soc/uniphier/aio-dma.c b/sound/soc/uniphier/aio-dma.c
index 265d61723e99..e930c48f3ac2 100644
--- a/sound/soc/uniphier/aio-dma.c
+++ b/sound/soc/uniphier/aio-dma.c
@@ -193,7 +193,7 @@ static snd_pcm_uframes_t uniphier_aiodma_pointer(
 
 static int uniphier_aiodma_mmap(struct snd_soc_component *component,
 				struct snd_pcm_substream *substream,
-				struct vm_area_struct *vma)
+				struct mm_area *vma)
 {
 	vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
 
diff --git a/sound/usb/usx2y/us122l.c b/sound/usb/usx2y/us122l.c
index 6bcf8b859ebb..818228d5e3a2 100644
--- a/sound/usb/usx2y/us122l.c
+++ b/sound/usb/usx2y/us122l.c
@@ -173,7 +173,7 @@ static int usb_stream_hwdep_release(struct snd_hwdep *hw, struct file *file)
 }
 
 static int usb_stream_hwdep_mmap(struct snd_hwdep *hw,
-				 struct file *filp, struct vm_area_struct *area)
+				 struct file *filp, struct mm_area *area)
 {
 	unsigned long	size = area->vm_end - area->vm_start;
 	struct us122l	*us122l = hw->private_data;
diff --git a/sound/usb/usx2y/usX2Yhwdep.c b/sound/usb/usx2y/usX2Yhwdep.c
index 9fd6a86cc08e..f53ab11ba825 100644
--- a/sound/usb/usx2y/usX2Yhwdep.c
+++ b/sound/usb/usx2y/usX2Yhwdep.c
@@ -37,7 +37,7 @@ static const struct vm_operations_struct us428ctls_vm_ops = {
 	.fault = snd_us428ctls_vm_fault,
 };
 
-static int snd_us428ctls_mmap(struct snd_hwdep *hw, struct file *filp, struct vm_area_struct *area)
+static int snd_us428ctls_mmap(struct snd_hwdep *hw, struct file *filp, struct mm_area *area)
 {
 	unsigned long	size = (unsigned long)(area->vm_end - area->vm_start);
 	struct usx2ydev	*us428 = hw->private_data;
diff --git a/sound/usb/usx2y/usx2yhwdeppcm.c b/sound/usb/usx2y/usx2yhwdeppcm.c
index 1b1496adb47e..acf7d36dc4e9 100644
--- a/sound/usb/usx2y/usx2yhwdeppcm.c
+++ b/sound/usb/usx2y/usx2yhwdeppcm.c
@@ -667,11 +667,11 @@ static int snd_usx2y_hwdep_pcm_release(struct snd_hwdep *hw, struct file *file)
 	return err;
 }
 
-static void snd_usx2y_hwdep_pcm_vm_open(struct vm_area_struct *area)
+static void snd_usx2y_hwdep_pcm_vm_open(struct mm_area *area)
 {
 }
 
-static void snd_usx2y_hwdep_pcm_vm_close(struct vm_area_struct *area)
+static void snd_usx2y_hwdep_pcm_vm_close(struct mm_area *area)
 {
 }
 
@@ -693,7 +693,7 @@ static const struct vm_operations_struct snd_usx2y_hwdep_pcm_vm_ops = {
 	.fault = snd_usx2y_hwdep_pcm_vm_fault,
 };
 
-static int snd_usx2y_hwdep_pcm_mmap(struct snd_hwdep *hw, struct file *filp, struct vm_area_struct *area)
+static int snd_usx2y_hwdep_pcm_mmap(struct snd_hwdep *hw, struct file *filp, struct mm_area *area)
 {
 	unsigned long	size = (unsigned long)(area->vm_end - area->vm_start);
 	struct usx2ydev	*usx2y = hw->private_data;
diff --git a/tools/include/linux/btf_ids.h b/tools/include/linux/btf_ids.h
index 72ea363d434d..3c3285b1bb05 100644
--- a/tools/include/linux/btf_ids.h
+++ b/tools/include/linux/btf_ids.h
@@ -205,7 +205,7 @@ extern u32 btf_sock_ids[];
 #define BTF_TRACING_TYPE_xxx	\
 	BTF_TRACING_TYPE(BTF_TRACING_TYPE_TASK, task_struct)	\
 	BTF_TRACING_TYPE(BTF_TRACING_TYPE_FILE, file)		\
-	BTF_TRACING_TYPE(BTF_TRACING_TYPE_VMA, vm_area_struct)
+	BTF_TRACING_TYPE(BTF_TRACING_TYPE_VMA, mm_area)
 
 enum {
 #define BTF_TRACING_TYPE(name, type) name,
diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h
index 28705ae67784..7894f9c2ae9b 100644
--- a/tools/include/uapi/linux/bpf.h
+++ b/tools/include/uapi/linux/bpf.h
@@ -5368,7 +5368,7 @@ union bpf_attr {
  *
  *		The expected callback signature is
  *
- *		long (\*callback_fn)(struct task_struct \*task, struct vm_area_struct \*vma, void \*callback_ctx);
+ *		long (\*callback_fn)(struct task_struct \*task, struct mm_area \*vma, void \*callback_ctx);
  *
  *	Return
  *		0 on success.
diff --git a/tools/testing/selftests/bpf/bpf_experimental.h b/tools/testing/selftests/bpf/bpf_experimental.h
index 6535c8ae3c46..08d8c40b8546 100644
--- a/tools/testing/selftests/bpf/bpf_experimental.h
+++ b/tools/testing/selftests/bpf/bpf_experimental.h
@@ -164,7 +164,7 @@ struct bpf_iter_task_vma;
 extern int bpf_iter_task_vma_new(struct bpf_iter_task_vma *it,
 				 struct task_struct *task,
 				 __u64 addr) __ksym;
-extern struct vm_area_struct *bpf_iter_task_vma_next(struct bpf_iter_task_vma *it) __ksym;
+extern struct mm_area *bpf_iter_task_vma_next(struct bpf_iter_task_vma *it) __ksym;
 extern void bpf_iter_task_vma_destroy(struct bpf_iter_task_vma *it) __ksym;
 
 /* Convenience macro to wrap over bpf_obj_drop_impl */
diff --git a/tools/testing/selftests/bpf/progs/bpf_iter_task_vmas.c b/tools/testing/selftests/bpf/progs/bpf_iter_task_vmas.c
index d64ba7ddaed5..899e6b03c070 100644
--- a/tools/testing/selftests/bpf/progs/bpf_iter_task_vmas.c
+++ b/tools/testing/selftests/bpf/progs/bpf_iter_task_vmas.c
@@ -25,7 +25,7 @@ __u32 one_task_error = 0;
 
 SEC("iter/task_vma") int proc_maps(struct bpf_iter__task_vma *ctx)
 {
-	struct vm_area_struct *vma = ctx->vma;
+	struct mm_area *vma = ctx->vma;
 	struct seq_file *seq = ctx->meta->seq;
 	struct task_struct *task = ctx->task;
 	struct file *file;
diff --git a/tools/testing/selftests/bpf/progs/bpf_iter_vma_offset.c b/tools/testing/selftests/bpf/progs/bpf_iter_vma_offset.c
index 174298e122d3..6a27844ef324 100644
--- a/tools/testing/selftests/bpf/progs/bpf_iter_vma_offset.c
+++ b/tools/testing/selftests/bpf/progs/bpf_iter_vma_offset.c
@@ -15,7 +15,7 @@ __u32 page_shift = 0;
 SEC("iter/task_vma")
 int get_vma_offset(struct bpf_iter__task_vma *ctx)
 {
-	struct vm_area_struct *vma = ctx->vma;
+	struct mm_area *vma = ctx->vma;
 	struct seq_file *seq = ctx->meta->seq;
 	struct task_struct *task = ctx->task;
 
diff --git a/tools/testing/selftests/bpf/progs/find_vma.c b/tools/testing/selftests/bpf/progs/find_vma.c
index 02b82774469c..75f90cb21179 100644
--- a/tools/testing/selftests/bpf/progs/find_vma.c
+++ b/tools/testing/selftests/bpf/progs/find_vma.c
@@ -20,7 +20,7 @@ __u64 addr = 0;
 int find_zero_ret = -1;
 int find_addr_ret = -1;
 
-static long check_vma(struct task_struct *task, struct vm_area_struct *vma,
+static long check_vma(struct task_struct *task, struct mm_area *vma,
 		      struct callback_ctx *data)
 {
 	if (vma->vm_file)
diff --git a/tools/testing/selftests/bpf/progs/find_vma_fail1.c b/tools/testing/selftests/bpf/progs/find_vma_fail1.c
index 7ba9a428f228..4a5a41997169 100644
--- a/tools/testing/selftests/bpf/progs/find_vma_fail1.c
+++ b/tools/testing/selftests/bpf/progs/find_vma_fail1.c
@@ -10,7 +10,7 @@ struct callback_ctx {
 	int dummy;
 };
 
-static long write_vma(struct task_struct *task, struct vm_area_struct *vma,
+static long write_vma(struct task_struct *task, struct mm_area *vma,
 		      struct callback_ctx *data)
 {
 	/* writing to vma, which is illegal */
diff --git a/tools/testing/selftests/bpf/progs/find_vma_fail2.c b/tools/testing/selftests/bpf/progs/find_vma_fail2.c
index 9bcf3203e26b..1117fc0475f2 100644
--- a/tools/testing/selftests/bpf/progs/find_vma_fail2.c
+++ b/tools/testing/selftests/bpf/progs/find_vma_fail2.c
@@ -9,7 +9,7 @@ struct callback_ctx {
 	int dummy;
 };
 
-static long write_task(struct task_struct *task, struct vm_area_struct *vma,
+static long write_task(struct task_struct *task, struct mm_area *vma,
 		       struct callback_ctx *data)
 {
 	/* writing to task, which is illegal */
diff --git a/tools/testing/selftests/bpf/progs/iters_css_task.c b/tools/testing/selftests/bpf/progs/iters_css_task.c
index 9ac758649cb8..bc48b47d1793 100644
--- a/tools/testing/selftests/bpf/progs/iters_css_task.c
+++ b/tools/testing/selftests/bpf/progs/iters_css_task.c
@@ -19,7 +19,7 @@ int css_task_cnt;
 u64 cg_id;
 
 SEC("lsm/file_mprotect")
-int BPF_PROG(iter_css_task_for_each, struct vm_area_struct *vma,
+int BPF_PROG(iter_css_task_for_each, struct mm_area *vma,
 	    unsigned long reqprot, unsigned long prot, int ret)
 {
 	struct task_struct *cur_task = bpf_get_current_task_btf();
diff --git a/tools/testing/selftests/bpf/progs/iters_task_vma.c b/tools/testing/selftests/bpf/progs/iters_task_vma.c
index dc0c3691dcc2..6334a2d0518d 100644
--- a/tools/testing/selftests/bpf/progs/iters_task_vma.c
+++ b/tools/testing/selftests/bpf/progs/iters_task_vma.c
@@ -18,7 +18,7 @@ SEC("raw_tp/sys_enter")
 int iter_task_vma_for_each(const void *ctx)
 {
 	struct task_struct *task = bpf_get_current_task_btf();
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned int seen = 0;
 
 	if (task->pid != target_pid)
diff --git a/tools/testing/selftests/bpf/progs/iters_testmod.c b/tools/testing/selftests/bpf/progs/iters_testmod.c
index 9e4b45201e69..d5303fb6d618 100644
--- a/tools/testing/selftests/bpf/progs/iters_testmod.c
+++ b/tools/testing/selftests/bpf/progs/iters_testmod.c
@@ -14,7 +14,7 @@ int iter_next_trusted(const void *ctx)
 {
 	struct task_struct *cur_task = bpf_get_current_task_btf();
 	struct bpf_iter_task_vma vma_it;
-	struct vm_area_struct *vma_ptr;
+	struct mm_area *vma_ptr;
 
 	bpf_iter_task_vma_new(&vma_it, cur_task, 0);
 
@@ -34,7 +34,7 @@ int iter_next_trusted_or_null(const void *ctx)
 {
 	struct task_struct *cur_task = bpf_get_current_task_btf();
 	struct bpf_iter_task_vma vma_it;
-	struct vm_area_struct *vma_ptr;
+	struct mm_area *vma_ptr;
 
 	bpf_iter_task_vma_new(&vma_it, cur_task, 0);
 
diff --git a/tools/testing/selftests/bpf/progs/lsm.c b/tools/testing/selftests/bpf/progs/lsm.c
index 0c13b7409947..7218621a833a 100644
--- a/tools/testing/selftests/bpf/progs/lsm.c
+++ b/tools/testing/selftests/bpf/progs/lsm.c
@@ -86,7 +86,7 @@ int mprotect_count = 0;
 int bprm_count = 0;
 
 SEC("lsm/file_mprotect")
-int BPF_PROG(test_int_hook, struct vm_area_struct *vma,
+int BPF_PROG(test_int_hook, struct mm_area *vma,
 	     unsigned long reqprot, unsigned long prot, int ret)
 {
 	if (ret != 0)
diff --git a/tools/testing/selftests/bpf/progs/test_bpf_cookie.c b/tools/testing/selftests/bpf/progs/test_bpf_cookie.c
index c83142b55f47..8f803369ad2d 100644
--- a/tools/testing/selftests/bpf/progs/test_bpf_cookie.c
+++ b/tools/testing/selftests/bpf/progs/test_bpf_cookie.c
@@ -125,7 +125,7 @@ int BPF_PROG(fmod_ret_test, int _a, int *_b, int _ret)
 }
 
 SEC("lsm/file_mprotect")
-int BPF_PROG(test_int_hook, struct vm_area_struct *vma,
+int BPF_PROG(test_int_hook, struct mm_area *vma,
 	     unsigned long reqprot, unsigned long prot, int ret)
 {
 	if (my_tid != (u32)bpf_get_current_pid_tgid())
diff --git a/tools/testing/selftests/bpf/progs/verifier_iterating_callbacks.c b/tools/testing/selftests/bpf/progs/verifier_iterating_callbacks.c
index 75dd922e4e9f..aa00a677636b 100644
--- a/tools/testing/selftests/bpf/progs/verifier_iterating_callbacks.c
+++ b/tools/testing/selftests/bpf/progs/verifier_iterating_callbacks.c
@@ -14,7 +14,7 @@ struct {
 	__uint(max_entries, 8);
 } ringbuf SEC(".maps");
 
-struct vm_area_struct;
+struct mm_area;
 struct bpf_map;
 
 struct buf_context {
@@ -146,7 +146,7 @@ int unsafe_ringbuf_drain(void *unused)
 	return choice_arr[loop_ctx.i];
 }
 
-static __u64 find_vma_cb(struct task_struct *task, struct vm_area_struct *vma, void *data)
+static __u64 find_vma_cb(struct task_struct *task, struct mm_area *vma, void *data)
 {
 	return oob_state_machine(data);
 }
diff --git a/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c b/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
index 3220f1d28697..b58ebc8ab3b1 100644
--- a/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
+++ b/tools/testing/selftests/bpf/test_kmods/bpf_testmod.c
@@ -198,7 +198,7 @@ __bpf_kfunc void bpf_kfunc_nested_release_test(struct sk_buff *ptr)
 {
 }
 
-__bpf_kfunc void bpf_kfunc_trusted_vma_test(struct vm_area_struct *ptr)
+__bpf_kfunc void bpf_kfunc_trusted_vma_test(struct mm_area *ptr)
 {
 }
 
diff --git a/tools/testing/selftests/bpf/test_kmods/bpf_testmod_kfunc.h b/tools/testing/selftests/bpf/test_kmods/bpf_testmod_kfunc.h
index b58817938deb..b28cf00b119b 100644
--- a/tools/testing/selftests/bpf/test_kmods/bpf_testmod_kfunc.h
+++ b/tools/testing/selftests/bpf/test_kmods/bpf_testmod_kfunc.h
@@ -154,7 +154,7 @@ int bpf_kfunc_st_ops_test_epilogue(struct st_ops_args *args) __ksym;
 int bpf_kfunc_st_ops_test_pro_epilogue(struct st_ops_args *args) __ksym;
 int bpf_kfunc_st_ops_inc10(struct st_ops_args *args) __ksym;
 
-void bpf_kfunc_trusted_vma_test(struct vm_area_struct *ptr) __ksym;
+void bpf_kfunc_trusted_vma_test(struct mm_area *ptr) __ksym;
 void bpf_kfunc_trusted_task_test(struct task_struct *ptr) __ksym;
 void bpf_kfunc_trusted_num_test(int *ptr) __ksym;
 void bpf_kfunc_rcu_task_test(struct task_struct *ptr) __ksym;
diff --git a/tools/testing/vma/vma.c b/tools/testing/vma/vma.c
index 11f761769b5b..57d129d16596 100644
--- a/tools/testing/vma/vma.c
+++ b/tools/testing/vma/vma.c
@@ -59,13 +59,13 @@ unsigned long rlimit(unsigned int limit)
 }
 
 /* Helper function to simply allocate a VMA. */
-static struct vm_area_struct *alloc_vma(struct mm_struct *mm,
+static struct mm_area *alloc_vma(struct mm_struct *mm,
 					unsigned long start,
 					unsigned long end,
 					pgoff_t pgoff,
 					vm_flags_t flags)
 {
-	struct vm_area_struct *ret = vm_area_alloc(mm);
+	struct mm_area *ret = vm_area_alloc(mm);
 
 	if (ret == NULL)
 		return NULL;
@@ -80,7 +80,7 @@ static struct vm_area_struct *alloc_vma(struct mm_struct *mm,
 }
 
 /* Helper function to allocate a VMA and link it to the tree. */
-static int attach_vma(struct mm_struct *mm, struct vm_area_struct *vma)
+static int attach_vma(struct mm_struct *mm, struct mm_area *vma)
 {
 	int res;
 
@@ -91,13 +91,13 @@ static int attach_vma(struct mm_struct *mm, struct vm_area_struct *vma)
 }
 
 /* Helper function to allocate a VMA and link it to the tree. */
-static struct vm_area_struct *alloc_and_link_vma(struct mm_struct *mm,
+static struct mm_area *alloc_and_link_vma(struct mm_struct *mm,
 						 unsigned long start,
 						 unsigned long end,
 						 pgoff_t pgoff,
 						 vm_flags_t flags)
 {
-	struct vm_area_struct *vma = alloc_vma(mm, start, end, pgoff, flags);
+	struct mm_area *vma = alloc_vma(mm, start, end, pgoff, flags);
 
 	if (vma == NULL)
 		return NULL;
@@ -118,9 +118,9 @@ static struct vm_area_struct *alloc_and_link_vma(struct mm_struct *mm,
 }
 
 /* Helper function which provides a wrapper around a merge new VMA operation. */
-static struct vm_area_struct *merge_new(struct vma_merge_struct *vmg)
+static struct mm_area *merge_new(struct vma_merge_struct *vmg)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	/*
 	 * For convenience, get prev and next VMAs. Which the new VMA operation
 	 * requires.
@@ -140,9 +140,9 @@ static struct vm_area_struct *merge_new(struct vma_merge_struct *vmg)
  * Helper function which provides a wrapper around a merge existing VMA
  * operation.
  */
-static struct vm_area_struct *merge_existing(struct vma_merge_struct *vmg)
+static struct mm_area *merge_existing(struct vma_merge_struct *vmg)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	vma = vma_merge_existing_range(vmg);
 	if (vma)
@@ -191,13 +191,13 @@ static void vmg_set_range(struct vma_merge_struct *vmg, unsigned long start,
  * Update vmg and the iterator for it and try to merge, otherwise allocate a new
  * VMA, link it to the maple tree and return it.
  */
-static struct vm_area_struct *try_merge_new_vma(struct mm_struct *mm,
+static struct mm_area *try_merge_new_vma(struct mm_struct *mm,
 						struct vma_merge_struct *vmg,
 						unsigned long start, unsigned long end,
 						pgoff_t pgoff, vm_flags_t flags,
 						bool *was_merged)
 {
-	struct vm_area_struct *merged;
+	struct mm_area *merged;
 
 	vmg_set_range(vmg, start, end, pgoff, flags);
 
@@ -231,7 +231,7 @@ static void reset_dummy_anon_vma(void)
  */
 static int cleanup_mm(struct mm_struct *mm, struct vma_iterator *vmi)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	int count = 0;
 
 	fail_prealloc = false;
@@ -249,7 +249,7 @@ static int cleanup_mm(struct mm_struct *mm, struct vma_iterator *vmi)
 }
 
 /* Helper function to determine if VMA has had vma_start_write() performed. */
-static bool vma_write_started(struct vm_area_struct *vma)
+static bool vma_write_started(struct mm_area *vma)
 {
 	int seq = vma->vm_lock_seq;
 
@@ -261,17 +261,17 @@ static bool vma_write_started(struct vm_area_struct *vma)
 }
 
 /* Helper function providing a dummy vm_ops->close() method.*/
-static void dummy_close(struct vm_area_struct *)
+static void dummy_close(struct mm_area *)
 {
 }
 
 static bool test_simple_merge(void)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long flags = VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE;
 	struct mm_struct mm = {};
-	struct vm_area_struct *vma_left = alloc_vma(&mm, 0, 0x1000, 0, flags);
-	struct vm_area_struct *vma_right = alloc_vma(&mm, 0x2000, 0x3000, 2, flags);
+	struct mm_area *vma_left = alloc_vma(&mm, 0, 0x1000, 0, flags);
+	struct mm_area *vma_right = alloc_vma(&mm, 0x2000, 0x3000, 2, flags);
 	VMA_ITERATOR(vmi, &mm, 0x1000);
 	struct vma_merge_struct vmg = {
 		.mm = &mm,
@@ -301,10 +301,10 @@ static bool test_simple_merge(void)
 
 static bool test_simple_modify(void)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long flags = VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE;
 	struct mm_struct mm = {};
-	struct vm_area_struct *init_vma = alloc_vma(&mm, 0, 0x3000, 0, flags);
+	struct mm_area *init_vma = alloc_vma(&mm, 0, 0x3000, 0, flags);
 	VMA_ITERATOR(vmi, &mm, 0x1000);
 
 	ASSERT_FALSE(attach_vma(&mm, init_vma));
@@ -363,7 +363,7 @@ static bool test_simple_expand(void)
 {
 	unsigned long flags = VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE;
 	struct mm_struct mm = {};
-	struct vm_area_struct *vma = alloc_vma(&mm, 0, 0x1000, 0, flags);
+	struct mm_area *vma = alloc_vma(&mm, 0, 0x1000, 0, flags);
 	VMA_ITERATOR(vmi, &mm, 0);
 	struct vma_merge_struct vmg = {
 		.vmi = &vmi,
@@ -391,7 +391,7 @@ static bool test_simple_shrink(void)
 {
 	unsigned long flags = VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE;
 	struct mm_struct mm = {};
-	struct vm_area_struct *vma = alloc_vma(&mm, 0, 0x3000, 0, flags);
+	struct mm_area *vma = alloc_vma(&mm, 0, 0x3000, 0, flags);
 	VMA_ITERATOR(vmi, &mm, 0);
 
 	ASSERT_FALSE(attach_vma(&mm, vma));
@@ -433,7 +433,7 @@ static bool test_merge_new(void)
 		.close = dummy_close,
 	};
 	int count;
-	struct vm_area_struct *vma, *vma_a, *vma_b, *vma_c, *vma_d;
+	struct mm_area *vma, *vma_a, *vma_b, *vma_c, *vma_d;
 	bool merged;
 
 	/*
@@ -616,7 +616,7 @@ static bool test_vma_merge_special_flags(void)
 	vm_flags_t special_flags[] = { VM_IO, VM_DONTEXPAND, VM_PFNMAP, VM_MIXEDMAP };
 	vm_flags_t all_special_flags = 0;
 	int i;
-	struct vm_area_struct *vma_left, *vma;
+	struct mm_area *vma_left, *vma;
 
 	/* Make sure there aren't new VM_SPECIAL flags. */
 	for (i = 0; i < ARRAY_SIZE(special_flags); i++) {
@@ -688,7 +688,7 @@ static bool test_vma_merge_with_close(void)
 	const struct vm_operations_struct vm_ops = {
 		.close = dummy_close,
 	};
-	struct vm_area_struct *vma_prev, *vma_next, *vma;
+	struct mm_area *vma_prev, *vma_next, *vma;
 
 	/*
 	 * When merging VMAs we are not permitted to remove any VMA that has a
@@ -894,12 +894,12 @@ static bool test_vma_merge_new_with_close(void)
 		.mm = &mm,
 		.vmi = &vmi,
 	};
-	struct vm_area_struct *vma_prev = alloc_and_link_vma(&mm, 0, 0x2000, 0, flags);
-	struct vm_area_struct *vma_next = alloc_and_link_vma(&mm, 0x5000, 0x7000, 5, flags);
+	struct mm_area *vma_prev = alloc_and_link_vma(&mm, 0, 0x2000, 0, flags);
+	struct mm_area *vma_next = alloc_and_link_vma(&mm, 0x5000, 0x7000, 5, flags);
 	const struct vm_operations_struct vm_ops = {
 		.close = dummy_close,
 	};
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	/*
 	 * We should allow the partial merge of a proposed new VMA if the
@@ -945,7 +945,7 @@ static bool test_merge_existing(void)
 	unsigned long flags = VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE;
 	struct mm_struct mm = {};
 	VMA_ITERATOR(vmi, &mm, 0);
-	struct vm_area_struct *vma, *vma_prev, *vma_next;
+	struct mm_area *vma, *vma_prev, *vma_next;
 	struct vma_merge_struct vmg = {
 		.mm = &mm,
 		.vmi = &vmi,
@@ -1175,7 +1175,7 @@ static bool test_anon_vma_non_mergeable(void)
 	unsigned long flags = VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE;
 	struct mm_struct mm = {};
 	VMA_ITERATOR(vmi, &mm, 0);
-	struct vm_area_struct *vma, *vma_prev, *vma_next;
+	struct mm_area *vma, *vma_prev, *vma_next;
 	struct vma_merge_struct vmg = {
 		.mm = &mm,
 		.vmi = &vmi,
@@ -1290,7 +1290,7 @@ static bool test_dup_anon_vma(void)
 	struct anon_vma_chain dummy_anon_vma_chain = {
 		.anon_vma = &dummy_anon_vma,
 	};
-	struct vm_area_struct *vma_prev, *vma_next, *vma;
+	struct mm_area *vma_prev, *vma_next, *vma;
 
 	reset_dummy_anon_vma();
 
@@ -1447,7 +1447,7 @@ static bool test_vmi_prealloc_fail(void)
 		.mm = &mm,
 		.vmi = &vmi,
 	};
-	struct vm_area_struct *vma_prev, *vma;
+	struct mm_area *vma_prev, *vma;
 
 	/*
 	 * We are merging vma into prev, with vma possessing an anon_vma, which
@@ -1507,7 +1507,7 @@ static bool test_merge_extend(void)
 	unsigned long flags = VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE;
 	struct mm_struct mm = {};
 	VMA_ITERATOR(vmi, &mm, 0x1000);
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 
 	vma = alloc_and_link_vma(&mm, 0, 0x1000, 0, flags);
 	alloc_and_link_vma(&mm, 0x3000, 0x4000, 3, flags);
@@ -1538,7 +1538,7 @@ static bool test_copy_vma(void)
 	struct mm_struct mm = {};
 	bool need_locks = false;
 	VMA_ITERATOR(vmi, &mm, 0);
-	struct vm_area_struct *vma, *vma_new, *vma_next;
+	struct mm_area *vma, *vma_new, *vma_next;
 
 	/* Move backwards and do not merge. */
 
@@ -1570,7 +1570,7 @@ static bool test_expand_only_mode(void)
 	unsigned long flags = VM_READ | VM_WRITE | VM_MAYREAD | VM_MAYWRITE;
 	struct mm_struct mm = {};
 	VMA_ITERATOR(vmi, &mm, 0);
-	struct vm_area_struct *vma_prev, *vma;
+	struct mm_area *vma_prev, *vma;
 	VMG_STATE(vmg, &mm, &vmi, 0x5000, 0x9000, flags, 5);
 
 	/*
@@ -1609,7 +1609,7 @@ static bool test_mmap_region_basic(void)
 {
 	struct mm_struct mm = {};
 	unsigned long addr;
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, &mm, 0);
 
 	current->mm = &mm;
diff --git a/tools/testing/vma/vma_internal.h b/tools/testing/vma/vma_internal.h
index 572ab2cea763..acb90a6ff98a 100644
--- a/tools/testing/vma/vma_internal.h
+++ b/tools/testing/vma/vma_internal.h
@@ -235,7 +235,7 @@ struct file {
 
 #define VMA_LOCK_OFFSET	0x40000000
 
-struct vm_area_struct {
+struct mm_area {
 	/* The first cache line has the info for VMA tree walking. */
 
 	union {
@@ -337,27 +337,27 @@ struct vm_area_struct {
 struct vm_fault {};
 
 struct vm_operations_struct {
-	void (*open)(struct vm_area_struct * area);
+	void (*open)(struct mm_area * area);
 	/**
 	 * @close: Called when the VMA is being removed from the MM.
 	 * Context: User context.  May sleep.  Caller holds mmap_lock.
 	 */
-	void (*close)(struct vm_area_struct * area);
+	void (*close)(struct mm_area * area);
 	/* Called any time before splitting to check if it's allowed */
-	int (*may_split)(struct vm_area_struct *area, unsigned long addr);
-	int (*mremap)(struct vm_area_struct *area);
+	int (*may_split)(struct mm_area *area, unsigned long addr);
+	int (*mremap)(struct mm_area *area);
 	/*
 	 * Called by mprotect() to make driver-specific permission
 	 * checks before mprotect() is finalised.   The VMA must not
 	 * be modified.  Returns 0 if mprotect() can proceed.
 	 */
-	int (*mprotect)(struct vm_area_struct *vma, unsigned long start,
+	int (*mprotect)(struct mm_area *vma, unsigned long start,
 			unsigned long end, unsigned long newflags);
 	vm_fault_t (*fault)(struct vm_fault *vmf);
 	vm_fault_t (*huge_fault)(struct vm_fault *vmf, unsigned int order);
 	vm_fault_t (*map_pages)(struct vm_fault *vmf,
 			pgoff_t start_pgoff, pgoff_t end_pgoff);
-	unsigned long (*pagesize)(struct vm_area_struct * area);
+	unsigned long (*pagesize)(struct mm_area * area);
 
 	/* notification that a previously read-only page is about to become
 	 * writable, if an error is returned it will cause a SIGBUS */
@@ -370,13 +370,13 @@ struct vm_operations_struct {
 	 * for use by special VMAs. See also generic_access_phys() for a generic
 	 * implementation useful for any iomem mapping.
 	 */
-	int (*access)(struct vm_area_struct *vma, unsigned long addr,
+	int (*access)(struct mm_area *vma, unsigned long addr,
 		      void *buf, int len, int write);
 
 	/* Called by the /proc/PID/maps code to ask the vma whether it
 	 * has a special name.  Returning non-NULL will also cause this
 	 * vma to be dumped unconditionally. */
-	const char *(*name)(struct vm_area_struct *vma);
+	const char *(*name)(struct mm_area *vma);
 
 #ifdef CONFIG_NUMA
 	/*
@@ -386,7 +386,7 @@ struct vm_operations_struct {
 	 * install a MPOL_DEFAULT policy, nor the task or system default
 	 * mempolicy.
 	 */
-	int (*set_policy)(struct vm_area_struct *vma, struct mempolicy *new);
+	int (*set_policy)(struct mm_area *vma, struct mempolicy *new);
 
 	/*
 	 * get_policy() op must add reference [mpol_get()] to any policy at
@@ -398,7 +398,7 @@ struct vm_operations_struct {
 	 * must return NULL--i.e., do not "fallback" to task or system default
 	 * policy.
 	 */
-	struct mempolicy *(*get_policy)(struct vm_area_struct *vma,
+	struct mempolicy *(*get_policy)(struct mm_area *vma,
 					unsigned long addr, pgoff_t *ilx);
 #endif
 	/*
@@ -406,7 +406,7 @@ struct vm_operations_struct {
 	 * page for @addr.  This is useful if the default behavior
 	 * (using pte_page()) would not find the correct page.
 	 */
-	struct page *(*find_special_page)(struct vm_area_struct *vma,
+	struct page *(*find_special_page)(struct mm_area *vma,
 					  unsigned long addr);
 };
 
@@ -442,12 +442,12 @@ static inline bool is_shared_maywrite(vm_flags_t vm_flags)
 		(VM_SHARED | VM_MAYWRITE);
 }
 
-static inline bool vma_is_shared_maywrite(struct vm_area_struct *vma)
+static inline bool vma_is_shared_maywrite(struct mm_area *vma)
 {
 	return is_shared_maywrite(vma->vm_flags);
 }
 
-static inline struct vm_area_struct *vma_next(struct vma_iterator *vmi)
+static inline struct mm_area *vma_next(struct vma_iterator *vmi)
 {
 	/*
 	 * Uses mas_find() to get the first VMA when the iterator starts.
@@ -461,25 +461,25 @@ static inline struct vm_area_struct *vma_next(struct vma_iterator *vmi)
  * assertions should be made either under mmap_write_lock or when the object
  * has been isolated under mmap_write_lock, ensuring no competing writers.
  */
-static inline void vma_assert_attached(struct vm_area_struct *vma)
+static inline void vma_assert_attached(struct mm_area *vma)
 {
 	WARN_ON_ONCE(!refcount_read(&vma->vm_refcnt));
 }
 
-static inline void vma_assert_detached(struct vm_area_struct *vma)
+static inline void vma_assert_detached(struct mm_area *vma)
 {
 	WARN_ON_ONCE(refcount_read(&vma->vm_refcnt));
 }
 
-static inline void vma_assert_write_locked(struct vm_area_struct *);
-static inline void vma_mark_attached(struct vm_area_struct *vma)
+static inline void vma_assert_write_locked(struct mm_area *);
+static inline void vma_mark_attached(struct mm_area *vma)
 {
 	vma_assert_write_locked(vma);
 	vma_assert_detached(vma);
 	refcount_set_release(&vma->vm_refcnt, 1);
 }
 
-static inline void vma_mark_detached(struct vm_area_struct *vma)
+static inline void vma_mark_detached(struct mm_area *vma)
 {
 	vma_assert_write_locked(vma);
 	vma_assert_attached(vma);
@@ -496,7 +496,7 @@ extern const struct vm_operations_struct vma_dummy_vm_ops;
 
 extern unsigned long rlimit(unsigned int limit);
 
-static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm)
+static inline void vma_init(struct mm_area *vma, struct mm_struct *mm)
 {
 	memset(vma, 0, sizeof(*vma));
 	vma->vm_mm = mm;
@@ -505,9 +505,9 @@ static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm)
 	vma->vm_lock_seq = UINT_MAX;
 }
 
-static inline struct vm_area_struct *vm_area_alloc(struct mm_struct *mm)
+static inline struct mm_area *vm_area_alloc(struct mm_struct *mm)
 {
-	struct vm_area_struct *vma = calloc(1, sizeof(struct vm_area_struct));
+	struct mm_area *vma = calloc(1, sizeof(struct mm_area));
 
 	if (!vma)
 		return NULL;
@@ -517,9 +517,9 @@ static inline struct vm_area_struct *vm_area_alloc(struct mm_struct *mm)
 	return vma;
 }
 
-static inline struct vm_area_struct *vm_area_dup(struct vm_area_struct *orig)
+static inline struct mm_area *vm_area_dup(struct mm_area *orig)
 {
-	struct vm_area_struct *new = calloc(1, sizeof(struct vm_area_struct));
+	struct mm_area *new = calloc(1, sizeof(struct mm_area));
 
 	if (!new)
 		return NULL;
@@ -576,7 +576,7 @@ static inline void mapping_allow_writable(struct address_space *mapping)
 	atomic_inc(&mapping->i_mmap_writable);
 }
 
-static inline void vma_set_range(struct vm_area_struct *vma,
+static inline void vma_set_range(struct mm_area *vma,
 				 unsigned long start, unsigned long end,
 				 pgoff_t pgoff)
 {
@@ -586,7 +586,7 @@ static inline void vma_set_range(struct vm_area_struct *vma,
 }
 
 static inline
-struct vm_area_struct *vma_find(struct vma_iterator *vmi, unsigned long max)
+struct mm_area *vma_find(struct vma_iterator *vmi, unsigned long max)
 {
 	return mas_find(&vmi->mas, max - 1);
 }
@@ -603,7 +603,7 @@ static inline int vma_iter_clear_gfp(struct vma_iterator *vmi,
 }
 
 static inline void mmap_assert_locked(struct mm_struct *);
-static inline struct vm_area_struct *find_vma_intersection(struct mm_struct *mm,
+static inline struct mm_area *find_vma_intersection(struct mm_struct *mm,
 						unsigned long start_addr,
 						unsigned long end_addr)
 {
@@ -614,12 +614,12 @@ static inline struct vm_area_struct *find_vma_intersection(struct mm_struct *mm,
 }
 
 static inline
-struct vm_area_struct *vma_lookup(struct mm_struct *mm, unsigned long addr)
+struct mm_area *vma_lookup(struct mm_struct *mm, unsigned long addr)
 {
 	return mtree_load(&mm->mm_mt, addr);
 }
 
-static inline struct vm_area_struct *vma_prev(struct vma_iterator *vmi)
+static inline struct mm_area *vma_prev(struct vma_iterator *vmi)
 {
 	return mas_prev(&vmi->mas, 0);
 }
@@ -629,7 +629,7 @@ static inline void vma_iter_set(struct vma_iterator *vmi, unsigned long addr)
 	mas_set(&vmi->mas, addr);
 }
 
-static inline bool vma_is_anonymous(struct vm_area_struct *vma)
+static inline bool vma_is_anonymous(struct mm_area *vma)
 {
 	return !vma->vm_ops;
 }
@@ -638,11 +638,11 @@ static inline bool vma_is_anonymous(struct vm_area_struct *vma)
 #define vma_iter_load(vmi) \
 	mas_walk(&(vmi)->mas)
 
-static inline struct vm_area_struct *
+static inline struct mm_area *
 find_vma_prev(struct mm_struct *mm, unsigned long addr,
-			struct vm_area_struct **pprev)
+			struct mm_area **pprev)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	VMA_ITERATOR(vmi, mm, addr);
 
 	vma = vma_iter_load(&vmi);
@@ -662,12 +662,12 @@ static inline void vma_iter_init(struct vma_iterator *vmi,
 
 /* Stubbed functions. */
 
-static inline struct anon_vma_name *anon_vma_name(struct vm_area_struct *vma)
+static inline struct anon_vma_name *anon_vma_name(struct mm_area *vma)
 {
 	return NULL;
 }
 
-static inline bool is_mergeable_vm_userfaultfd_ctx(struct vm_area_struct *vma,
+static inline bool is_mergeable_vm_userfaultfd_ctx(struct mm_area *vma,
 					struct vm_userfaultfd_ctx vm_ctx)
 {
 	return true;
@@ -683,7 +683,7 @@ static inline void might_sleep(void)
 {
 }
 
-static inline unsigned long vma_pages(struct vm_area_struct *vma)
+static inline unsigned long vma_pages(struct mm_area *vma)
 {
 	return (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
 }
@@ -696,7 +696,7 @@ static inline void mpol_put(struct mempolicy *)
 {
 }
 
-static inline void vm_area_free(struct vm_area_struct *vma)
+static inline void vm_area_free(struct mm_area *vma)
 {
 	free(vma);
 }
@@ -718,7 +718,7 @@ static inline void update_hiwater_vm(struct mm_struct *)
 }
 
 static inline void unmap_vmas(struct mmu_gather *tlb, struct ma_state *mas,
-		      struct vm_area_struct *vma, unsigned long start_addr,
+		      struct mm_area *vma, unsigned long start_addr,
 		      unsigned long end_addr, unsigned long tree_end,
 		      bool mm_wr_locked)
 {
@@ -732,7 +732,7 @@ static inline void unmap_vmas(struct mmu_gather *tlb, struct ma_state *mas,
 }
 
 static inline void free_pgtables(struct mmu_gather *tlb, struct ma_state *mas,
-		   struct vm_area_struct *vma, unsigned long floor,
+		   struct mm_area *vma, unsigned long floor,
 		   unsigned long ceiling, bool mm_wr_locked)
 {
 	(void)tlb;
@@ -760,12 +760,12 @@ static inline struct file *get_file(struct file *f)
 	return f;
 }
 
-static inline int vma_dup_policy(struct vm_area_struct *, struct vm_area_struct *)
+static inline int vma_dup_policy(struct mm_area *, struct mm_area *)
 {
 	return 0;
 }
 
-static inline int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_struct *src)
+static inline int anon_vma_clone(struct mm_area *dst, struct mm_area *src)
 {
 	/* For testing purposes. We indicate that an anon_vma has been cloned. */
 	if (src->anon_vma != NULL) {
@@ -776,16 +776,16 @@ static inline int anon_vma_clone(struct vm_area_struct *dst, struct vm_area_stru
 	return 0;
 }
 
-static inline void vma_start_write(struct vm_area_struct *vma)
+static inline void vma_start_write(struct mm_area *vma)
 {
 	/* Used to indicate to tests that a write operation has begun. */
 	vma->vm_lock_seq++;
 }
 
-static inline void vma_adjust_trans_huge(struct vm_area_struct *vma,
+static inline void vma_adjust_trans_huge(struct mm_area *vma,
 					 unsigned long start,
 					 unsigned long end,
-					 struct vm_area_struct *next)
+					 struct mm_area *next)
 {
 	(void)vma;
 	(void)start;
@@ -799,7 +799,7 @@ static inline void vma_iter_free(struct vma_iterator *vmi)
 }
 
 static inline
-struct vm_area_struct *vma_iter_next_range(struct vma_iterator *vmi)
+struct mm_area *vma_iter_next_range(struct vma_iterator *vmi)
 {
 	return mas_next_range(&vmi->mas, ULONG_MAX);
 }
@@ -808,12 +808,12 @@ static inline void vm_acct_memory(long pages)
 {
 }
 
-static inline void vma_interval_tree_insert(struct vm_area_struct *,
+static inline void vma_interval_tree_insert(struct mm_area *,
 					    struct rb_root_cached *)
 {
 }
 
-static inline void vma_interval_tree_remove(struct vm_area_struct *,
+static inline void vma_interval_tree_remove(struct mm_area *,
 					    struct rb_root_cached *)
 {
 }
@@ -832,11 +832,11 @@ static inline void anon_vma_interval_tree_remove(struct anon_vma_chain*,
 {
 }
 
-static inline void uprobe_mmap(struct vm_area_struct *)
+static inline void uprobe_mmap(struct mm_area *)
 {
 }
 
-static inline void uprobe_munmap(struct vm_area_struct *vma,
+static inline void uprobe_munmap(struct mm_area *vma,
 				 unsigned long start, unsigned long end)
 {
 	(void)vma;
@@ -852,11 +852,11 @@ static inline void anon_vma_lock_write(struct anon_vma *)
 {
 }
 
-static inline void vma_assert_write_locked(struct vm_area_struct *)
+static inline void vma_assert_write_locked(struct mm_area *)
 {
 }
 
-static inline void unlink_anon_vmas(struct vm_area_struct *vma)
+static inline void unlink_anon_vmas(struct mm_area *vma)
 {
 	/* For testing purposes, indicate that the anon_vma was unlinked. */
 	vma->anon_vma->was_unlinked = true;
@@ -870,12 +870,12 @@ static inline void i_mmap_unlock_write(struct address_space *)
 {
 }
 
-static inline void anon_vma_merge(struct vm_area_struct *,
-				  struct vm_area_struct *)
+static inline void anon_vma_merge(struct mm_area *,
+				  struct mm_area *)
 {
 }
 
-static inline int userfaultfd_unmap_prep(struct vm_area_struct *vma,
+static inline int userfaultfd_unmap_prep(struct mm_area *vma,
 					 unsigned long start,
 					 unsigned long end,
 					 struct list_head *unmaps)
@@ -934,7 +934,7 @@ static inline bool mpol_equal(struct mempolicy *, struct mempolicy *)
 	return true;
 }
 
-static inline void khugepaged_enter_vma(struct vm_area_struct *vma,
+static inline void khugepaged_enter_vma(struct mm_area *vma,
 			  unsigned long vm_flags)
 {
 	(void)vma;
@@ -946,17 +946,17 @@ static inline bool mapping_can_writeback(struct address_space *)
 	return true;
 }
 
-static inline bool is_vm_hugetlb_page(struct vm_area_struct *)
+static inline bool is_vm_hugetlb_page(struct mm_area *)
 {
 	return false;
 }
 
-static inline bool vma_soft_dirty_enabled(struct vm_area_struct *)
+static inline bool vma_soft_dirty_enabled(struct mm_area *)
 {
 	return false;
 }
 
-static inline bool userfaultfd_wp(struct vm_area_struct *)
+static inline bool userfaultfd_wp(struct mm_area *)
 {
 	return false;
 }
@@ -998,63 +998,63 @@ static inline bool may_expand_vm(struct mm_struct *, vm_flags_t, unsigned long)
 	return true;
 }
 
-static inline void vm_flags_init(struct vm_area_struct *vma,
+static inline void vm_flags_init(struct mm_area *vma,
 				 vm_flags_t flags)
 {
 	vma->__vm_flags = flags;
 }
 
-static inline void vm_flags_set(struct vm_area_struct *vma,
+static inline void vm_flags_set(struct mm_area *vma,
 				vm_flags_t flags)
 {
 	vma_start_write(vma);
 	vma->__vm_flags |= flags;
 }
 
-static inline void vm_flags_clear(struct vm_area_struct *vma,
+static inline void vm_flags_clear(struct mm_area *vma,
 				  vm_flags_t flags)
 {
 	vma_start_write(vma);
 	vma->__vm_flags &= ~flags;
 }
 
-static inline int call_mmap(struct file *, struct vm_area_struct *)
+static inline int call_mmap(struct file *, struct mm_area *)
 {
 	return 0;
 }
 
-static inline int shmem_zero_setup(struct vm_area_struct *)
+static inline int shmem_zero_setup(struct mm_area *)
 {
 	return 0;
 }
 
-static inline void vma_set_anonymous(struct vm_area_struct *vma)
+static inline void vma_set_anonymous(struct mm_area *vma)
 {
 	vma->vm_ops = NULL;
 }
 
-static inline void ksm_add_vma(struct vm_area_struct *)
+static inline void ksm_add_vma(struct mm_area *)
 {
 }
 
-static inline void perf_event_mmap(struct vm_area_struct *)
+static inline void perf_event_mmap(struct mm_area *)
 {
 }
 
-static inline bool vma_is_dax(struct vm_area_struct *)
+static inline bool vma_is_dax(struct mm_area *)
 {
 	return false;
 }
 
-static inline struct vm_area_struct *get_gate_vma(struct mm_struct *)
+static inline struct mm_area *get_gate_vma(struct mm_struct *)
 {
 	return NULL;
 }
 
-bool vma_wants_writenotify(struct vm_area_struct *vma, pgprot_t vm_page_prot);
+bool vma_wants_writenotify(struct mm_area *vma, pgprot_t vm_page_prot);
 
 /* Update vma->vm_page_prot to reflect vma->vm_flags. */
-static inline void vma_set_page_prot(struct vm_area_struct *vma)
+static inline void vma_set_page_prot(struct mm_area *vma)
 {
 	unsigned long vm_flags = vma->vm_flags;
 	pgprot_t vm_page_prot;
@@ -1076,16 +1076,16 @@ static inline bool arch_validate_flags(unsigned long)
 	return true;
 }
 
-static inline void vma_close(struct vm_area_struct *)
+static inline void vma_close(struct mm_area *)
 {
 }
 
-static inline int mmap_file(struct file *, struct vm_area_struct *)
+static inline int mmap_file(struct file *, struct mm_area *)
 {
 	return 0;
 }
 
-static inline unsigned long stack_guard_start_gap(struct vm_area_struct *vma)
+static inline unsigned long stack_guard_start_gap(struct mm_area *vma)
 {
 	if (vma->vm_flags & VM_GROWSDOWN)
 		return stack_guard_gap;
@@ -1097,7 +1097,7 @@ static inline unsigned long stack_guard_start_gap(struct vm_area_struct *vma)
 	return 0;
 }
 
-static inline unsigned long vm_start_gap(struct vm_area_struct *vma)
+static inline unsigned long vm_start_gap(struct mm_area *vma)
 {
 	unsigned long gap = stack_guard_start_gap(vma);
 	unsigned long vm_start = vma->vm_start;
@@ -1108,7 +1108,7 @@ static inline unsigned long vm_start_gap(struct vm_area_struct *vma)
 	return vm_start;
 }
 
-static inline unsigned long vm_end_gap(struct vm_area_struct *vma)
+static inline unsigned long vm_end_gap(struct mm_area *vma)
 {
 	unsigned long vm_end = vma->vm_end;
 
@@ -1126,7 +1126,7 @@ static inline int is_hugepage_only_range(struct mm_struct *mm,
 	return 0;
 }
 
-static inline bool vma_is_accessible(struct vm_area_struct *vma)
+static inline bool vma_is_accessible(struct mm_area *vma)
 {
 	return vma->vm_flags & VM_ACCESS_FLAGS;
 }
@@ -1153,7 +1153,7 @@ static inline bool mlock_future_ok(struct mm_struct *mm, unsigned long flags,
 	return locked_pages <= limit_pages;
 }
 
-static inline int __anon_vma_prepare(struct vm_area_struct *vma)
+static inline int __anon_vma_prepare(struct mm_area *vma)
 {
 	struct anon_vma *anon_vma = calloc(1, sizeof(struct anon_vma));
 
@@ -1166,7 +1166,7 @@ static inline int __anon_vma_prepare(struct vm_area_struct *vma)
 	return 0;
 }
 
-static inline int anon_vma_prepare(struct vm_area_struct *vma)
+static inline int anon_vma_prepare(struct mm_area *vma)
 {
 	if (likely(vma->anon_vma))
 		return 0;
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index e85b33a92624..419e641a79a8 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -2618,7 +2618,7 @@ EXPORT_SYMBOL_GPL(kvm_vcpu_is_visible_gfn);
 
 unsigned long kvm_host_page_size(struct kvm_vcpu *vcpu, gfn_t gfn)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	unsigned long addr, size;
 
 	size = PAGE_SIZE;
@@ -2860,7 +2860,7 @@ static int hva_to_pfn_slow(struct kvm_follow_pfn *kfp, kvm_pfn_t *pfn)
 	return npages;
 }
 
-static bool vma_is_valid(struct vm_area_struct *vma, bool write_fault)
+static bool vma_is_valid(struct mm_area *vma, bool write_fault)
 {
 	if (unlikely(!(vma->vm_flags & VM_READ)))
 		return false;
@@ -2871,7 +2871,7 @@ static bool vma_is_valid(struct vm_area_struct *vma, bool write_fault)
 	return true;
 }
 
-static int hva_to_pfn_remapped(struct vm_area_struct *vma,
+static int hva_to_pfn_remapped(struct mm_area *vma,
 			       struct kvm_follow_pfn *kfp, kvm_pfn_t *p_pfn)
 {
 	struct follow_pfnmap_args args = { .vma = vma, .address = kfp->hva };
@@ -2919,7 +2919,7 @@ static int hva_to_pfn_remapped(struct vm_area_struct *vma,
 
 kvm_pfn_t hva_to_pfn(struct kvm_follow_pfn *kfp)
 {
-	struct vm_area_struct *vma;
+	struct mm_area *vma;
 	kvm_pfn_t pfn;
 	int npages, r;
 
@@ -3997,7 +3997,7 @@ static const struct vm_operations_struct kvm_vcpu_vm_ops = {
 	.fault = kvm_vcpu_fault,
 };
 
-static int kvm_vcpu_mmap(struct file *file, struct vm_area_struct *vma)
+static int kvm_vcpu_mmap(struct file *file, struct mm_area *vma)
 {
 	struct kvm_vcpu *vcpu = file->private_data;
 	unsigned long pages = vma_pages(vma);
@@ -4613,7 +4613,7 @@ static long kvm_vcpu_compat_ioctl(struct file *filp,
 }
 #endif
 
-static int kvm_device_mmap(struct file *filp, struct vm_area_struct *vma)
+static int kvm_device_mmap(struct file *filp, struct mm_area *vma)
 {
 	struct kvm_device *dev = filp->private_data;
 
-- 
2.47.2



             reply	other threads:[~2025-04-01 12:26 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-01 12:25 Matthew Wilcox (Oracle) [this message]
2025-04-01 12:35 ` Lorenzo Stoakes
2025-04-01 14:17 ` Liam R. Howlett
2025-04-01 14:21   ` Vlastimil Babka
2025-04-01 14:46     ` Johannes Weiner
2025-04-01 14:54     ` Harry Yoo
2025-04-01 15:17       ` Mike Rapoport
2025-04-01 15:11 ` David Hildenbrand
2025-04-01 15:20   ` Lorenzo Stoakes
2025-04-01 15:26     ` David Hildenbrand
2025-04-01 23:53       ` John Hubbard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250401122602.1738511-1-willy@infradead.org \
    --to=willy@infradead.org \
    --cc=Liam.Howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=jannh@google.com \
    --cc=linux-mm@kvack.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=vbabka@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox