[PATCH v2 00/13] mm: convert more vm_flags_t users to vma_flags_t

From: Lorenzo Stoakes

Date: Sat Jul 11 2026 - 14:46:11 EST


This series makes further progress in converting usage of the deprecated
vm_flags_t type to its replacement, vma_flags_t.

It focuses on mm, though updates some users of mm APIs also.

It updates:

* The core do_mmap() code path for VMA mapping.
* Unmapped area logic.
* The usage of mm->def_vma_flags.
* VMA page protection bit logic.
* General usage of VMA flags in core mm code, mlock, mprotect, mremap.

REVIEWER/MERGER NOTE: This is dependent on [0], which must be merged before
this.

[0]:https://lore.kernel.org/linux-mm/20260710-b4-pre-scalable-cow-v2-0-2a5aa403d977@xxxxxxxxxx/

Signed-off-by: Lorenzo Stoakes <ljs@xxxxxxxxxx>
---
Changes in v2:
* Rebased on to mm-new that has the 33 patch rework dependency in it.
* Distributed tags, thanks everybody!
* Moved VMA_STACK_INCOMPLETE_SETUP and VMA_STACK_EARLY VMA userland test defines
from 1/13 to 9/13 as per Zi.
* Fixed whitespace in 3/13 as per Zi.
* Updated 5/13 to use %*pb formatter for VMA flags (to match mm flags formatter)
in dump_mm(), as per Lance.
* Updated 8/13 to update panthor_gem.c to vma_get_page_prot() as per Lance.
* Fixed up comment type in 11/13 as per Lance.
* Fixed bug of using VMA_GROWSUP_BIT rather than VMA_GROWSUP as per Lance
in 12/13.
* Added detail about when we are and are not required to open code
vma_write_lock() for VMA flag mutators in the commit message for 13/13 as
per Lance and Zi.

v1:
https://patch.msgid.link/cover.1782760670.git.ljs@xxxxxxxxxx

To: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>
To: David Hildenbrand <david@xxxxxxxxxx>
To: "Liam R. Howlett" <liam@xxxxxxxxxxxxx>
To: Vlastimil Babka <vbabka@xxxxxxxxxx>
To: Mike Rapoport <rppt@xxxxxxxxxx>
To: Suren Baghdasaryan <surenb@xxxxxxxxxx>
To: Michal Hocko <mhocko@xxxxxxxx>
To: Thomas Bogendoerfer <tsbogend@xxxxxxxxxxxxxxxx>
To: Benjamin LaHaise <bcrl@xxxxxxxxx>
To: Alexander Viro <viro@xxxxxxxxxxxxxxxxxx>
To: Christian Brauner <brauner@xxxxxxxxxx>
To: Jan Kara <jack@xxxxxxx>
To: Hugh Dickins <hughd@xxxxxxxxxx>
To: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
To: Jann Horn <jannh@xxxxxxxxxx>
To: Pedro Falcato <pfalcato@xxxxxxx>
To: Muchun Song <muchun.song@xxxxxxxxx>
To: Oscar Salvador <osalvador@xxxxxxx>
To: Zi Yan <ziy@xxxxxxxxxx>
To: Nico Pache <npache@xxxxxxxxxx>
To: Ryan Roberts <ryan.roberts@xxxxxxx>
To: Dev Jain <dev.jain@xxxxxxx>
To: Barry Song <baohua@xxxxxxxxxx>
To: Lance Yang <lance.yang@xxxxxxxxx>
To: Usama Arif <usama.arif@xxxxxxxxx>
To: Madhavan Srinivasan <maddy@xxxxxxxxxxxxx>
To: Michael Ellerman <mpe@xxxxxxxxxxxxxx>
To: Nicholas Piggin <npiggin@xxxxxxxxx>
To: "Christophe Leroy (CS GROUP)" <chleroy@xxxxxxxxxx>
To: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx>
To: Maxime Ripard <mripard@xxxxxxxxxx>
To: Thomas Zimmermann <tzimmermann@xxxxxxx>
To: David Airlie <airlied@xxxxxxxxx>
To: Simona Vetter <simona@xxxxxxxx>
To: Lucas Stach <l.stach@xxxxxxxxxxxxxx>
To: Russell King <linux+etnaviv@xxxxxxxxxxxxxxx>
To: Christian Gmeiner <christian.gmeiner@xxxxxxxxx>
To: Inki Dae <inki.dae@xxxxxxxxxxx>
To: Seung-Woo Kim <sw0312.kim@xxxxxxxxxxx>
To: Kyungmin Park <kyungmin.park@xxxxxxxxxxx>
To: Krzysztof Kozlowski <krzk@xxxxxxxxxx>
To: Peter Griffin <peter.griffin@xxxxxxxxxx>
To: Alim Akhtar <alim.akhtar@xxxxxxxxxxx>
To: Jani Nikula <jani.nikula@xxxxxxxxxxxxxxx>
To: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx>
To: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx>
To: Tvrtko Ursulin <tursulin@xxxxxxxxxxx>
To: Rob Clark <robin.clark@xxxxxxxxxxxxxxxx>
To: Dmitry Baryshkov <lumag@xxxxxxxxxx>
To: Abhinav Kumar <abhinav.kumar@xxxxxxxxx>
To: Jessica Zhang <jesszhan0024@xxxxxxxxx>
To: Sean Paul <sean@xxxxxxxxxx>
To: Marijn Suijten <marijn.suijten@xxxxxxxxxxxxxx>
To: Lyude Paul <lyude@xxxxxxxxxx>
To: Danilo Krummrich <dakr@xxxxxxxxxx>
To: Tomi Valkeinen <tomi.valkeinen@xxxxxxxxxxxxxxxx>
To: Sandy Huang <hjc@xxxxxxxxxxxxxx>
To: Heiko Stübner <heiko@xxxxxxxxx>
To: Andy Yan <andy.yan@xxxxxxxxxxxxxx>
To: Thierry Reding <thierry.reding@xxxxxxxxxx>
To: Mikko Perttunen <mperttunen@xxxxxxxxxx>
To: Jonathan Hunter <jonathanh@xxxxxxxxxx>
To: Gerd Hoffmann <kraxel@xxxxxxxxxx>
To: Dmitry Osipenko <dmitry.osipenko@xxxxxxxxxxxxx>
To: Gurchetan Singh <gurchetansingh@xxxxxxxxxxxx>
To: Chia-I Wu <olvaffe@xxxxxxxxx>
To: Zack Rusin <zack.rusin@xxxxxxxxxxxx>
To: Broadcom internal kernel review list <bcm-kernel-feedback-list@xxxxxxxxxxxx>
To: Matthew Brost <matthew.brost@xxxxxxxxx>
To: Thomas Hellström <thomas.hellstrom@xxxxxxxxxxxxxxx>
To: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx>
To: Helge Deller <deller@xxxxxx>
To: Kees Cook <kees@xxxxxxxxxx>
To: Jaroslav Kysela <perex@xxxxxxxx>
To: Takashi Iwai <tiwai@xxxxxxxx>
To: Boris Brezillon <boris.brezillon@xxxxxxxxxxxxx>
To: Steven Price <steven.price@xxxxxxx>
To: Liviu Dudau <liviu.dudau@xxxxxxx>
Cc: ljs@xxxxxxxxxx
Cc: linux-mm@xxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx
Cc: linux-mips@xxxxxxxxxxxxxxx
Cc: linux-aio@xxxxxxxxx
Cc: linux-fsdevel@xxxxxxxxxxxxxxx
Cc: linuxppc-dev@xxxxxxxxxxxxxxxx
Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx
Cc: etnaviv@xxxxxxxxxxxxxxxxxxxxx
Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
Cc: linux-samsung-soc@xxxxxxxxxxxxxxx
Cc: intel-gfx@xxxxxxxxxxxxxxxxxxxxx
Cc: linux-arm-msm@xxxxxxxxxxxxxxx
Cc: freedreno@xxxxxxxxxxxxxxxxxxxxx
Cc: nouveau@xxxxxxxxxxxxxxxxxxxxx
Cc: linux-rockchip@xxxxxxxxxxxxxxxxxxx
Cc: linux-tegra@xxxxxxxxxxxxxxx
Cc: virtualization@xxxxxxxxxxxxxxx
Cc: intel-xe@xxxxxxxxxxxxxxxxxxxxx
Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx
Cc: linux-fbdev@xxxxxxxxxxxxxxx
Cc: linux-sound@xxxxxxxxxxxxxxx

---
Lorenzo Stoakes (13):
mm: introduce vma_flags_can_grow() and vma_can_grow()
mm/vma: update do_mmap() to use vma_flags_t
mm: convert __get_unmapped_area() to use vma_flags_t
mm: update generic_get_unmapped_area[_topdown]() to use vma_flags_t
mm: prefer mm->def_vma_flags in mm logic
mm/vma: convert vm_pgprot_modify() to use vma_flags_t and rename
mm/vma: rename vma_get_page_prot to vma_flags_to_page_prot
mm: introduce vma_get_page_prot() and use it
mm/vma: update create_init_stack_vma() to use vma_flags_t
mm/vma: convert miscellaneous uses of VMA flags in core mm
mm/mlock: convert mlock code to use vma_flags_t
mm/mprotect: convert mprotect code to use vma_flags_t
mm/mremap: convert mremap code to use vma_flags_t

arch/mips/kernel/vdso.c | 4 +-
arch/powerpc/mm/book3s64/slice.c | 6 +-
drivers/gpu/drm/drm_gem.c | 2 +-
drivers/gpu/drm/drm_gem_dma_helper.c | 2 +-
drivers/gpu/drm/drm_gem_shmem_helper.c | 2 +-
drivers/gpu/drm/etnaviv/etnaviv_gem.c | 2 +-
drivers/gpu/drm/exynos/exynos_drm_gem.c | 6 +-
drivers/gpu/drm/i915/gem/i915_gem_mman.c | 12 +-
drivers/gpu/drm/msm/msm_gem.c | 2 +-
drivers/gpu/drm/nouveau/nouveau_gem.c | 2 +-
drivers/gpu/drm/omapdrm/omap_fbdev.c | 2 +-
drivers/gpu/drm/omapdrm/omap_gem.c | 6 +-
drivers/gpu/drm/panthor/panthor_gem.c | 2 +-
drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 2 +-
drivers/gpu/drm/tegra/gem.c | 2 +-
drivers/gpu/drm/virtio/virtgpu_vram.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_page_dirty.c | 2 +-
drivers/gpu/drm/xe/xe_device.c | 2 +-
drivers/gpu/drm/xe/xe_mmio_gem.c | 2 +-
drivers/gpu/drm/xen/xen_drm_front_gem.c | 2 +-
drivers/video/fbdev/core/fb_io_fops.c | 2 +-
fs/aio.c | 2 +-
fs/hugetlbfs/inode.c | 3 +-
include/linux/huge_mm.h | 10 +-
include/linux/memfd.h | 6 +-
include/linux/mm.h | 52 +++++++--
include/linux/sched/mm.h | 13 +--
ipc/shm.c | 3 +-
mm/debug.c | 5 +-
mm/huge_memory.c | 21 ++--
mm/memfd.c | 15 +--
mm/mlock.c | 99 +++++++++--------
mm/mmap.c | 164 +++++++++++++++-------------
mm/mprotect.c | 16 +--
mm/mremap.c | 38 ++++---
mm/nommu.c | 3 +-
mm/util.c | 10 +-
mm/vma.c | 26 +++--
mm/vma.h | 8 +-
mm/vma_exec.c | 20 ++--
sound/core/memalloc.c | 2 +-
tools/testing/vma/include/dup.h | 23 ++--
42 files changed, 341 insertions(+), 264 deletions(-)
---
base-commit: 61cccb8363fcc282d4ae0555b8739dd227f5ad0b
change-id: 20260711-b4-vma-flags-mm-bd05385df9fc

Cheers,
--
Lorenzo Stoakes <ljs@xxxxxxxxxx>