The patch titled Subject: mm/migrate: fix do_pages_move for compat pointers has been added to the -mm mm-unstable branch. Its filename is mm-migrate-fix-do_pages_move-for-compat-pointers.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/mm-migrate-fix-do_pages_move-for-compat-pointers.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Gregory Price <gourry.memverge@xxxxxxxxx> Subject: mm/migrate: fix do_pages_move for compat pointers Date: Tue, 3 Oct 2023 10:48:56 -0400 do_pages_move does not handle compat pointers for the page list. correctly. Add in_compat_syscall check and appropriate get_user fetch when iterating the page list. Link: https://lkml.kernel.org/r/20231003144857.752952-1-gregory.price@xxxxxxxxxxxx Fixes: 5b1b561ba73c ("mm: simplify compat_sys_move_pages") Signed-off-by: Gregory Price <gregory.price@xxxxxxxxxxxx> Reported-by: Arnd Bergmann <arnd@xxxxxxxx> Co-developed-by: Arnd Bergmann <arnd@xxxxxxxx> Cc: Jonathan Cameron <Jonathan.Cameron@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/migrate.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) --- a/mm/migrate.c~mm-migrate-fix-do_pages_move-for-compat-pointers +++ a/mm/migrate.c @@ -2155,6 +2155,7 @@ static int do_pages_move(struct mm_struc const int __user *nodes, int __user *status, int flags) { + compat_uptr_t __user *compat_pages = (void __user *)pages; int current_node = NUMA_NO_NODE; LIST_HEAD(pagelist); int start, i; @@ -2167,8 +2168,17 @@ static int do_pages_move(struct mm_struc int node; err = -EFAULT; - if (get_user(p, pages + i)) - goto out_flush; + if (in_compat_syscall()) { + compat_uptr_t cp; + + if (get_user(cp, compat_pages + i)) + goto out_flush; + + p = compat_ptr(cp); + } else { + if (get_user(p, pages + i)) + goto out_flush; + } if (get_user(node, nodes + i)) goto out_flush; _ Patches currently in -mm which might be from gourry.memverge@xxxxxxxxx are mm-migrate-fix-do_pages_move-for-compat-pointers.patch mm-migrate-remove-unused-mm-argument-from-do_move_pages_to_node.patch