linux/arch/mips/kernel
Lorenzo Stoakes 1944a0183c mm/vma: update do_mmap() to use vma_flags_t
The core do_mmap() function accepts a vm_flags_t parameter which it then
manipulates before passing to mmap_region() to do the heavy lifting of the
memory mapping.

Update do_mmap() to instead accept a vma_flags_t parameter, and adjust all
the logic within do_mmap() to manipulate this instead.

This is as part of the ongoing effort to convert VMA flags from a system
word size to a bitmap type which allows us to unrestrict the number of VMA
flags, as well as gain control over how VMA flag manipulation occurs.

We do not cascade these changes to all functions which accept vm_flags_t,
but rather use vma_flags_to_legacy() where necessary, specifically
deferring converting calc_vm_prot_bits(), calc_vm_flag_bits() and
__get_unmapped_area() to vma_flags_t.

Also utilise the new vma_flags_can_grow() predicate which correctly
handles the case of architectures without upward growing stacks.

As part of this change, introduce VMA_SHADOW_STACK so we can correctly
handle the case of the shadow stack not being defined.

No functional change intended.

Link: https://lore.kernel.org/20260711-b4-vma-flags-mm-v2-2-0fa2357d5431@kernel.org
Signed-off-by: Lorenzo Stoakes <ljs@kernel.org>
Reviewed-by: Lance Yang <lance.yang@linux.dev>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Reviewed-by: Vlastimil Babka (SUSE) <vbabka@kernel.org>
Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: Barry Song <baohua@kernel.org>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Dave Airlie <airlied@gmail.com>
Cc: David Hildenbrand <david@kernel.org>
Cc: Dev Jain <dev.jain@arm.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Jan Kara <jack@suse.cz>
Cc: Jann Horn <jannh@google.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Nico Pache <npache@redhat.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: Pedro Falcato <pfalcato@suse.de>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2026-08-06 18:57:01 -07:00
..
syscalls rseq: Implement sys_rseq_slice_yield() 2026-01-22 11:11:17 +01:00
.gitignore .gitignore: add SPDX License Identifier 2020-03-25 11:50:48 +01:00
access-helper.h MIPS: Fix new sparse warnings 2021-04-07 16:11:05 +02:00
asm-offsets.c arch: Add the macro COMPILE_OFFSETS to all the asm-offsets.c 2025-09-25 09:57:15 +02:00
bmips_5xxx_init.S
bmips_vec.S
branch.c MIPS: kernel: include probes-common.h header in branch.c 2020-09-21 22:14:24 +02:00
cacheinfo.c drivers: base: cacheinfo: Get rid of DEFINE_SMP_CALL_CACHE_FUNCTION() 2021-09-01 10:29:10 +02:00
cevt-bcm1480.c MIPS: Fix the wrong format specifier 2025-01-11 12:33:01 +01:00
cevt-ds1287.c MIPS: cevt-ds1287: Add missing ds1287.h include 2025-02-27 10:46:30 +01:00
cevt-gt641xx.c
cevt-r4k.c MIPS: Move IP30 timer to request_percpu_irq() 2025-12-15 22:20:50 +01:00
cevt-sb1250.c
cevt-txx9.c mips: kernel: convert comma to semicolon 2020-12-28 22:32:28 +01:00
cmpxchg.c MIPS: export __cmpxchg_small() 2024-10-23 18:10:24 +02:00
cps-vec-ns16550.S mips: Add CPS_NS16550_WIDTH config 2020-05-22 09:12:52 +02:00
cps-vec.S mips: cps: Assemble jr.hb with an R2 ISA level 2026-05-26 16:35:36 +02:00
cpu-probe.c MIPS: Always record SEGBITS in cpu_data.vmbits 2026-04-01 21:53:50 +02:00
cpu-r3k-probe.c MIPS: Always record SEGBITS in cpu_data.vmbits 2026-04-01 21:53:50 +02:00
crash_dump.c vmcore: convert copy_oldmem_page() to take an iov_iter 2022-04-29 14:37:59 -07:00
crash.c
csrc-bcm1480.c
csrc-ioasic.c
csrc-r4k.c MIPS: csrc-r4k: Only use VDSO_CLOCKMODE_R4K when it is a available 2026-06-09 17:02:10 +02:00
csrc-sb1250.c
early_printk_8250.c
early_printk.c
elf.c MIPS: Implement ieee754 NAN2008 emulation mode 2024-07-12 13:09:25 +02:00
entry.S MIPS: Remove TX39XX support 2022-03-01 10:07:22 +01:00
fpu-probe.c MIPS: Implement ieee754 NAN2008 emulation mode 2024-07-12 13:09:25 +02:00
fpu-probe.h MIPS: cpu-probe: move fpu probing/handling into its own file 2020-10-12 12:04:50 +02:00
ftrace.c MIPS: ftrace: Fix memory corruption when kernel is located beyond 32 bits 2025-12-01 10:07:25 +01:00
genex.S MIPS: Fix whitespace damage in r4k_wait from VS timer fix 2025-12-01 10:34:34 +01:00
gpio_txx9.c treewide: rename GPIO set callbacks back to their original names 2025-08-07 10:07:06 +02:00
head.S MIPS: Add a blank line after __HEAD 2025-01-11 12:32:12 +01:00
i8253.c
idle.c MIPS: Fix idle VS timer enqueue 2025-04-27 10:12:03 +02:00
irq_txx9.c MIPS: Remove TX39XX support 2022-03-01 10:07:22 +01:00
irq-gt641xx.c
irq-msc01.c
irq.c MIPS: Make do_IRQ() available for assembly callers 2026-05-26 16:35:36 +02:00
jump_label.c MIPS: jump_label: Fix compat branch range check 2022-11-11 15:46:03 +01:00
kgdb.c MIPS: kernel: Drop kgdb_call_nmi_hook 2021-02-15 12:23:54 +01:00
kprobes.c MIPS: Fix typos 2024-01-08 10:39:12 +01:00
linux32.c fs: fix archiecture-specific compat_ftruncate64 2026-03-23 12:41:57 +01:00
machine_kexec.c mips: kexec: include linux/reboot.h 2023-12-10 17:21:42 -08:00
Makefile arch: use always-$(KBUILD_BUILTIN) for vmlinux.lds 2025-06-07 14:38:07 +09:00
mcount.S mips: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-15 10:22:23 +02:00
mips-cm.c MIPS: CPS: Improve mips_cps_first_online_in_cluster() 2025-07-16 18:34:49 +02:00
mips-cpc.c mips: cpc: Fix refcount leak in mips_cpc_default_phys_base 2022-04-26 15:11:25 +02:00
mips-mt-fpaff.c mips: sched: Fix CPUMASK_OFFSTACK memory corruption 2026-06-15 12:17:27 +02:00
mips-mt.c MIPS: kernel: Rename read/write_c0_ecc to read/writec0_errctl 2025-01-11 12:31:21 +01:00
mips-r2-to-r6-emul.c MIPS: Fix build error due to PTR used in more places 2022-01-27 09:04:19 +01:00
module.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
octeon_switch.S mips: remove unneeded #include <asm/export.h> 2023-08-15 10:22:23 +02:00
perf_event_mipsxx.c mips/perf: Remove driver-specific throttle support 2025-05-21 13:57:47 +02:00
perf_event.c
perf_regs.c MIPS: kernel: Support extracting off-line stack traces from user-space with perf 2021-02-04 21:55:45 +01:00
pm-cps.c MIPS: CPS: Introduce struct cluster_boot_config 2025-02-21 10:19:34 +01:00
pm.c
probes-common.h
proc.c MIPS: kernel: proc: Delete unnecessary braces in show_cpuinfo() 2026-06-15 12:19:50 +02:00
process.c MIPS: kernel: Fix random segmentation faults 2025-11-21 13:24:05 +01:00
prom.c of/fdt: add dt_phys arg to early_init_dt_scan and early_init_dt_verify 2024-10-29 15:32:45 -05:00
ptrace.c MIPS: ptrace: Use USER_REGSET_NOTE_TYPE() to specify regset note names 2025-07-14 22:27:47 -07:00
ptrace32.c mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
r4k_fpu.S mips: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-15 10:22:23 +02:00
r4k_switch.S
r4k-bugs64.c MIPS: kernel: Remove $0 clobber from `mult_sh_align_mod' 2026-04-06 14:01:59 +02:00
r2300_fpu.S mips: replace #include <asm/export.h> with #include <linux/export.h> 2023-08-15 10:22:23 +02:00
r2300_switch.S mips: remove unneeded #include <asm/export.h> 2023-08-15 10:22:23 +02:00
relocate_kernel.S MIPS: Fix typos 2024-01-08 10:39:12 +01:00
relocate.c MIPS: Work around LLVM bug when gp is used as global register variable 2026-02-09 12:49:29 +01:00
reset.c mips: Use do_kernel_power_off() 2022-05-19 19:30:31 +02:00
rtlx-mt.c mips: mt: make mt_class constant 2024-03-07 17:18:50 +01:00
rtlx.c
scall32-o32.S MIPS: Export syscall stack arguments properly for remote use 2025-02-13 12:41:18 +01:00
scall64-n32.S MIPS: scall: Save thread_info.syscall unconditionally on entry 2024-04-09 16:52:21 +02:00
scall64-n64.S MIPS: scall: Save thread_info.syscall unconditionally on entry 2024-04-09 16:52:21 +02:00
scall64-o32.S MIPS: scall: Save thread_info.syscall unconditionally on entry 2024-04-09 16:52:21 +02:00
segment.c mips: kernel: convert to DEFINE_SHOW_ATTRIBUTE 2022-09-19 16:40:17 +02:00
setup.c MIPS: validate DT bootargs before appending them 2026-04-13 15:36:36 +02:00
signal_n32.c mips: signal: move sigcontext declarations to header 2023-12-10 17:21:39 -08:00
signal_o32.c mips: add asm/syscalls.h header 2023-12-10 17:21:38 -08:00
signal-common.h mips: signal: move sigcontext declarations to header 2023-12-10 17:21:39 -08:00
signal.c Just cleanups and fixes 2024-01-17 11:20:50 -08:00
signal32.c mips: add asm/syscalls.h header 2023-12-10 17:21:38 -08:00
smp-bmips.c mips: bmips: enable RAC on BMIPS4350 2024-06-27 10:44:36 +02:00
smp-cps.c Convert remaining multi-line kmalloc_obj/flex GFP_KERNEL uses 2026-02-22 08:26:33 -08:00
smp-mt.c MIPS: Rework smt cmdline parameters 2023-06-09 10:34:14 +02:00
smp-up.c
smp.c MIPS: smp: report dying CPU to RCU in stop_this_cpu() 2026-06-15 12:20:33 +02:00
spinlock_test.c mips: kernel: use DEFINE_DEBUGFS_ATTRIBUTE with debugfs_create_file_unsafe() 2021-03-14 14:09:49 +01:00
spram.c MIPS: kernel: Rename read/write_c0_ecc to read/writec0_errctl 2025-01-11 12:31:21 +01:00
stacktrace.c
sync-r4k.c MIPS: sync-r4k: Rework based on x86 tsc_sync 2024-07-03 16:50:12 +02:00
syscall.c mips: add asm/syscalls.h header 2023-12-10 17:21:38 -08:00
sysrq.c tty: sysrq: switch sysrq handlers from int to u8 2023-07-25 19:21:03 +02:00
time.c MIPS: Fix CP0 counter erratum detection for R4k CPUs 2022-04-29 15:52:00 +02:00
topology.c drivers/base/node: consolidate node device subsystem initialization in node_dev_init() 2022-03-22 15:57:10 -07:00
traps.c MIPS: rename rollback_handler with skipover_handler 2025-04-27 10:12:44 +02:00
unaligned.c mips: add missing declarations for trap handlers 2023-12-10 17:21:38 -08:00
uprobes.c mips/uprobes: use kmap_local_page() in arch_uprobe_copy_ixol() 2026-01-06 16:34:27 +01:00
vdso.c mm/vma: update do_mmap() to use vma_flags_t 2026-08-06 18:57:01 -07:00
vmlinux.lds.S kbuild: Split .modinfo out from ELF_DETAILS 2026-02-26 11:50:19 -07:00
vpe-mt.c MIPS: Implement microMIPS MT ASE helpers 2024-02-23 10:13:47 +01:00
vpe.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
watch.c MIPS: Use fallthrough for arch/mips 2020-05-07 11:55:47 +02:00