This RFC series proposes two possible ways for enabling asynchronous mm teardown. The first approach, in patch 1, is simply to provide an arch hook in exit_mm. This has no functional change for archs that don't explicitly use the hook, and leaves the hard part to arch code (including accounting, if any). The second approach, in patches 2 to 4, adds a new syscall to allow an mm to be asynchronously torn down in the context of another process (similarly to how process_mrelease works). It also adds an OOM notifier to prevent the OOM killer from killing processes while the teardown is in progress. Claudio Imbrenda (4): exit: add arch mmput hook in exit_mm kernel/fork.c: implement new process_mmput_async syscall mm: wire up the process_mmput_async syscall kernel/fork.c: process_mmput_async: stop OOM while freeing memory arch/alpha/kernel/syscalls/syscall.tbl | 2 + arch/arm/tools/syscall.tbl | 1 + arch/arm64/include/asm/unistd.h | 2 +- arch/arm64/include/asm/unistd32.h | 2 + arch/ia64/kernel/syscalls/syscall.tbl | 2 + arch/m68k/kernel/syscalls/syscall.tbl | 2 + arch/microblaze/kernel/syscalls/syscall.tbl | 2 + arch/mips/kernel/syscalls/syscall_n32.tbl | 2 + arch/mips/kernel/syscalls/syscall_n64.tbl | 2 + arch/mips/kernel/syscalls/syscall_o32.tbl | 2 + arch/parisc/kernel/syscalls/syscall.tbl | 2 + arch/powerpc/kernel/syscalls/syscall.tbl | 2 + arch/s390/kernel/syscalls/syscall.tbl | 2 + arch/sh/kernel/syscalls/syscall.tbl | 2 + arch/sparc/kernel/syscalls/syscall.tbl | 2 + arch/x86/entry/syscalls/syscall_32.tbl | 1 + arch/x86/entry/syscalls/syscall_64.tbl | 1 + arch/xtensa/kernel/syscalls/syscall.tbl | 2 + include/asm-generic/mmu_context.h | 4 + include/linux/mm_types.h | 1 + include/linux/syscalls.h | 1 + include/uapi/asm-generic/unistd.h | 5 +- kernel/exit.c | 2 +- kernel/fork.c | 131 +++++++++++++++++++- kernel/sys_ni.c | 1 + 25 files changed, 173 insertions(+), 5 deletions(-) -- 2.31.1