A series of fixes to simplify and improve the GUP interface with an eye to providing groundwork to future improvements:- * __access_remote_vm() and access_remote_vm() are functionally identical, so make the former static such that in future we can potentially change the external-facing implementation details of this function. * Extend is_valid_gup_args() to cover the missing FOLL_TOUCH case, and simplify things by defining INTERNAL_GUP_FLAGS to check against. * Adjust __get_user_pages_locked() to explicitly treat a failure to pin any pages as an error in all circumstances other than FOLL_NOWAIT being specified, bringing it in line with the nommu implementation of this function. * (With many thanks to Arnd who suggested this in the first instance) Update get_user_page_vma_remote() to explicitly only return a page or an error, simplifying the interface and avoiding the questionable IS_ERR_OR_NULL() pattern. v2: * Corrected spelling mistakes in patches 1 and 2 (thanks PeterZ). * Made things WARN_ON_ONCE() where appropriate and dropped unnecessary checks (thanks David). v1: https://lore.kernel.org/all/cover.1696174961.git.lstoakes@xxxxxxxxx/ Lorenzo Stoakes (4): mm: make __access_remote_vm() static mm/gup: explicitly define and check internal GUP flags, disallow FOLL_TOUCH mm/gup: make failure to pin an error if FOLL_NOWAIT not specified mm/gup: adapt get_user_page_vma_remote() to never return NULL arch/arm64/kernel/mte.c | 4 ++-- include/linux/mm.h | 14 +++++++++----- kernel/events/uprobes.c | 4 ++-- kernel/ptrace.c | 2 +- mm/gup.c | 16 +++++++++++++--- mm/internal.h | 3 +++ mm/memory.c | 7 +++---- mm/nommu.c | 4 ++-- 8 files changed, 35 insertions(+), 19 deletions(-) -- 2.42.0