[PATCH 0/3] use vm_flags_t consistently

Lorenzo Stoakes lorenzo.stoakes at oracle.com
Thu Jun 19 05:42:51 AEST 2025


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


More information about the Linuxppc-dev mailing list