linux/arch/riscv/kernel
Mike Kravetz e9adcfecf5 mm: remove zap_page_range and create zap_vma_pages
zap_page_range was originally designed to unmap pages within an address
range that could span multiple vmas.  While working on [1], it was
discovered that all callers of zap_page_range pass a range entirely within
a single vma.  In addition, the mmu notification call within zap_page
range does not correctly handle ranges that span multiple vmas.  When
crossing a vma boundary, a new mmu_notifier_range_init/end call pair with
the new vma should be made.

Instead of fixing zap_page_range, do the following:
- Create a new routine zap_vma_pages() that will remove all pages within
  the passed vma.  Most users of zap_page_range pass the entire vma and
  can use this new routine.
- For callers of zap_page_range not passing the entire vma, instead call
  zap_page_range_single().
- Remove zap_page_range.

[1] https://lore.kernel.org/linux-mm/20221114235507.294320-2-mike.kravetz@oracle.com/
Link: https://lkml.kernel.org/r/20230104002732.232573-1-mike.kravetz@oracle.com
Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com>
Suggested-by: Peter Xu <peterx@redhat.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Acked-by: Peter Xu <peterx@redhat.com>
Acked-by: Heiko Carstens <hca@linux.ibm.com>	[s390]
Reviewed-by: Christoph Hellwig <hch@lst.de>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Nadav Amit <nadav.amit@gmail.com>
Cc: Palmer Dabbelt <palmer@dabbelt.com>
Cc: Rik van Riel <riel@surriel.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2023-01-18 17:12:55 -08:00
..
compat_vdso riscv: compat: vdso: Add COMPAT_VDSO base code implementation 2022-04-26 13:36:53 -07:00
probes riscv, kprobes: Stricter c.jr/c.jalr decoding 2023-01-05 12:30:41 -08:00
vdso riscv: vdso: fix section overlapping under some conditions 2022-11-29 18:45:53 -08:00
.gitignore
alternative.c riscv: make patch-function pointer more generic in cpu_manufacturer_info struct 2022-06-16 15:47:40 -07:00
asm-offsets.c RISC-V: Add arch functions for non-retentive suspend entry/exit 2022-03-10 09:29:31 -08:00
cacheinfo.c drivers: base: cacheinfo: Get rid of DEFINE_SMP_CALL_CACHE_FUNCTION() 2021-09-01 10:29:10 +02:00
compat_signal.c riscv: compat: signal: Add rt_frame implementation 2022-05-17 16:37:21 -07:00
compat_syscall_table.c riscv: compat: syscall: Add compat_sys_call_table implementation 2022-04-26 13:36:25 -07:00
cpu_ops_sbi.c riscv: cpu_ops_sbi: Add 64bit hartid support on RV64 2022-07-19 16:38:58 -07:00
cpu_ops_spinwait.c RISC-V: cpu_ops_spinwait.c should include head.h 2022-08-11 13:24:16 -07:00
cpu_ops.c riscv: ensure cpu_ops_sbi is declared 2022-08-11 13:46:51 -07:00
cpu-hotplug.c riscv: cpu-hotplug: clear cpu from numa map when teardown 2022-02-10 09:16:50 -08:00
cpu.c RISC-V Patches for the 6.2 Merge Window, Part 1 2022-12-14 15:23:49 -08:00
cpufeature.c RISC-V: Ensure Zicbom has a valid block size 2022-12-09 19:12:52 -08:00
crash_core.c RISC-V: Add arch_crash_save_vmcoreinfo support 2022-12-02 16:48:22 -08:00
crash_dump.c vmcore: convert copy_oldmem_page() to take an iov_iter 2022-04-29 14:37:59 -07:00
crash_save_regs.S RISC-V: Fixup get incorrect user mode PC for kernel mode regs 2022-08-11 08:54:40 -07:00
efi-header.S RISC-V: Add PE/COFF header for EFI stub 2020-10-02 14:31:16 -07:00
efi.c riscv: read-only pages should not be writable 2022-05-28 11:39:31 +02:00
elf_kexec.c RISC-V: kexec: Fix memory leak of elf header buffer 2022-12-05 10:59:58 -08:00
entry.S Merge patch series "RISC-V: Align the shadow stack" 2022-12-12 09:30:37 -08:00
fpu.S
ftrace.c ftrace: Remove return value of ftrace_arch_modify_*() 2022-05-26 21:13:00 -04:00
head.h RISC-V: Move spinwait booting method to its own config 2022-01-20 09:27:16 -08:00
head.S riscv: Initialize thread pointer before calling C functions 2022-06-01 21:46:23 -07:00
image-vars.h efi: libstub: Provide local implementations of strrchr() and memchr() 2022-11-09 12:42:02 +01:00
irq.c
jump_label.c jump_label: make initial NOP patching the special case 2022-06-24 09:48:55 +02:00
kexec_relocate.S riscv: Don't use va_pa_offset on kdump 2022-01-09 10:38:06 -08:00
kgdb.c riscv: Fix "no previous prototype" compile warning in kgdb.c file 2020-07-09 20:09:30 -07:00
machine_kexec_file.c RISC-V: Add kexec_file support 2022-05-19 12:14:18 -07:00
machine_kexec.c riscv: kexec: Fixup crash_smp_send_stop without multi cores 2022-11-29 21:50:59 -08:00
Makefile RISC-V: Add arch_crash_save_vmcoreinfo support 2022-12-02 16:48:22 -08:00
mcount-dyn.S riscv: Using PATCHABLE_FUNCTION_ENTRY instead of MCOUNT 2021-01-14 15:09:05 -08:00
mcount.S RISC-V: preserve a1 in mcount 2022-12-02 10:04:37 -08:00
module-sections.c
module.c riscv: implement module alternatives 2022-05-11 21:36:31 -07:00
patch.c riscv: patch_text: Fixup last cpu should be master 2022-04-22 08:29:24 -07:00
perf_callchain.c riscv: Fix fill_callchain return value 2022-03-30 23:01:42 -07:00
perf_regs.c perf/arch: Remove perf_sample_data::regs_user_copy 2020-11-09 18:12:34 +01:00
process.c riscv: process: fix kernel info leakage 2022-11-10 13:43:15 -08:00
ptrace.c riscv: compat: ptrace: Add compat_arch_ptrace implement 2022-05-17 16:37:22 -07:00
reset.c riscv: Use do_kernel_power_off() 2022-05-19 19:30:30 +02:00
riscv_ksyms.c riscv: provide memmove implementation 2020-12-10 17:27:54 -08:00
sbi.c RISC-V: Export sbi_get_mvendorid() and friends 2022-12-07 09:17:38 +05:30
setup.c riscv: mm: Proper page permissions after initmem free 2022-11-29 18:54:30 -08:00
signal.c RISC-V: Fix unannoted hardirqs-on in return to userspace slow-path 2022-12-08 15:31:41 -08:00
smp.c riscv: kexec: Fixup crash_smp_send_stop without multi cores 2022-11-29 21:50:59 -08:00
smpboot.c riscv: topology: fix default topology reporting 2022-08-15 22:07:34 +01:00
soc.c riscv: Fix builtin DTB handling 2021-01-07 19:00:50 -08:00
stacktrace.c riscv: stacktrace: Make walk_stackframe cross pt_regs frame 2022-12-05 18:13:34 -08:00
suspend_entry.S RISC-V: Split out the XIP fixups into their own file 2022-05-25 14:43:33 -07:00
suspend.c RISC-V: Add arch functions for non-retentive suspend entry/exit 2022-03-10 09:29:31 -08:00
sys_riscv.c riscv: Allow PROT_WRITE-only mmap() 2022-09-22 09:44:59 -07:00
syscall_table.c riscv/vdso: Refactor asm/vdso.h 2021-10-02 13:42:23 -07:00
time.c RISC-V Patches for the 5.13 Merge Window, Part 1 2021-05-06 09:24:18 -07:00
trace_irq.c riscv: fix oops caused by irqsoff latency tracer 2022-02-24 20:30:30 -08:00
trace_irq.h riscv: fix oops caused by irqsoff latency tracer 2022-02-24 20:30:30 -08:00
traps_misaligned.c riscv: traps_misaligned: do not duplicate stringify 2022-08-11 08:56:53 -07:00
traps.c Merge patch series "RISC-V: Align the shadow stack" 2022-12-12 09:30:37 -08:00
vdso.c mm: remove zap_page_range and create zap_vma_pages 2023-01-18 17:12:55 -08:00
vmlinux-xip.lds.S riscv: vmlinux.lds.S|vmlinux-xip.lds.S: remove .fixup section 2022-01-05 17:53:37 -08:00
vmlinux.lds.S riscv: vmlinux.lds.S|vmlinux-xip.lds.S: remove .fixup section 2022-01-05 17:53:37 -08:00