[PATCH 0/3] use vm_flags_t consistently

Lorenzo Stoakes
2025-06-18T22:48:44Z

The VMA flags field vma->vm_flags is of type vm_flags_t. Right now this is
exactly equivalent to unsigned long, but it should not be assumed to be.

Much code that references vma->vm_flags already correctly uses vm_flags_t,
but a fairly large chunk of code simply uses unsigned long and assumes that
the two are equivalent.

This series corrects that and has us use vm_flags_t consistently.

This series is motivated by the desire to, in a future series, adjust
vm_flags_t to be a u64 regardless of whether the kernel is 32-bit or 64-bit
in order to deal with the VMA flag exhaustion issue and avoid all the
various problems that arise from it (being unable to use certain features
in 32-bit, being unable to add new flags except for 64-bit, etc.)

This is therefore a critical first step towards that goal. At any rate,
using the correct type is of value regardless.

We additionally take the opportunity to refer to VMA flags as vm_flags
where possible to make clear what we're referring to.

Overall, this series does not introduce any functional change.

Lorenzo Stoakes (3):
mm: change vm_get_page_prot() to accept vm_flags_t argument
mm: update core kernel code to use vm_flags_t consistently
mm: update architecture and driver code to use vm_flags_t

arch/arm/mm/fault.c | 2 +-
arch/arm64/include/asm/mman.h | 10 +-
arch/arm64/mm/fault.c | 2 +-
arch/arm64/mm/mmap.c | 2 +-
arch/arm64/mm/mmu.c | 2 +-
arch/powerpc/include/asm/book3s/64/pkeys.h | 3 +-
arch/powerpc/include/asm/mman.h | 2 +-
arch/powerpc/include/asm/pkeys.h | 4 +-
arch/powerpc/kvm/book3s_hv_uvmem.c | 2 +-
arch/sparc/include/asm/mman.h | 4 +-
arch/sparc/mm/init_64.c | 2 +-
arch/x86/kernel/cpu/sgx/encl.c | 8 +-
arch/x86/kernel/cpu/sgx/encl.h | 2 +-
arch/x86/mm/pgprot.c | 2 +-
fs/exec.c | 2 +-
fs/userfaultfd.c | 2 +-
include/linux/coredump.h | 2 +-
include/linux/huge_mm.h | 12 +-
include/linux/khugepaged.h | 4 +-
include/linux/ksm.h | 4 +-
include/linux/memfd.h | 4 +-
include/linux/mm.h | 10 +-
include/linux/mm_types.h | 2 +-
include/linux/mman.h | 4 +-
include/linux/pgtable.h | 2 +-
include/linux/rmap.h | 4 +-
include/linux/userfaultfd_k.h | 4 +-
include/trace/events/fs_dax.h | 6 +-
mm/debug.c | 2 +-
mm/execmem.c | 8 +-
mm/filemap.c | 2 +-
mm/gup.c | 2 +-
mm/huge_memory.c | 2 +-
mm/hugetlb.c | 4 +-
mm/internal.h | 4 +-
mm/khugepaged.c | 4 +-
mm/ksm.c | 2 +-
mm/madvise.c | 4 +-
mm/mapping_dirty_helpers.c | 2 +-
mm/memfd.c | 8 +-
mm/memory.c | 4 +-
mm/mmap.c | 16 +-
mm/mprotect.c | 8 +-
mm/mremap.c | 2 +-
mm/nommu.c | 12 +-
mm/rmap.c | 4 +-
mm/shmem.c | 6 +-
mm/userfaultfd.c | 14 +-
mm/vma.c | 78 +++---
mm/vma.h | 16 +-
mm/vmscan.c | 4 +-
tools/testing/vma/vma.c | 266 ++++++++++-----------
tools/testing/vma/vma_internal.h | 12 +-
53 files changed, 298 insertions(+), 297 deletions(-)

--
2.49.0