mips-vdso-prefer-do_mmap-to-mmap_region.patch removed from -mm tree
The quilt patch titled
Subject: mips: vdso: prefer do_mmap() to mmap_region()
has been removed from the -mm tree. Its filename was
mips-vdso-prefer-do_mmap-to-mmap_region.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: Lorenzo Stoakes <[email protected]>
Subject: mips: vdso: prefer do_mmap() to mmap_region()
Date: Thu, 2 Jan 2025 12:10:51 +0000
Patch series "mm: update mips to use do_mmap(), make mmap_region() internal".
Currently the only user of mmap_region() outside of the memory management code is the MIPS VDSO implementation.
This uses mmap_region() to map a 'delay slot emulation page' at the top of the stack which is read-only and executable.
This mapping requires that an already-acquired mmap write lock is utilised and that uffd and populate logic is ignored. This rules out vm_mmap(), however do_mmap() fits the bill.
Adapt this code to use do_mmap() and then once done, make mmap_region() internal and userland testable, and avoid any other uses of mmap_region(), which is absolutely and strictly an internal mm function which bypasses a great number of checks and logic.
This patch (of 2):
mmap_region() is an internal memory management implementation detail that is not intended to be used outside of the memory management subsystem.
Map the delay slot emulation page using do_mmap() which makes use of the already-held mmap write lock and bypasses unneeded populate and userfaultfd logic.
This should have the precise same behaviour as the existing logic.
---
arch/mips/kernel/vdso.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
arch/mips/kernel/vdso.c renamed from arch/mips/kernel/vdso.c~mips-vdso-prefer-do_mmap-to-mmap_region +6 -4
@@ -11,6 +11,7 @@#include <linux/ioport.h> #include <linux/kernel.h> #include <linux/mm.h> +#include <linux/mman.h> #include <linux/random.h> #include <linux/sched.h> #include <linux/slab.h>
@@ -97,11 +98,12 @@ int arch_setup_additional_pages(struct lreturn -EINTR ;if (IS_ENABLED (CONFIG_MIPS_FP_SUPPORT )) { +unsigned long unused; +/* Map delay slot emulation page */ - base =mmap_region (NULL ,STACK_TOP ,PAGE_SIZE , -VM_READ |VM_EXEC | -VM_MAYREAD |VM_MAYWRITE |VM_MAYEXEC , -0 ,NULL ); + base =do_mmap (NULL ,STACK_TOP ,PAGE_SIZE ,PROT_READ |PROT_EXEC , +MAP_ANONYMOUS |MAP_PRIVATE |MAP_FIXED ,0 ,0 , &unused, +NULL );if (IS_ERR_VALUE (base)) { ret = base; goto out;
_
Patches currently in -mm which might be from [email protected] are