mm: make __access_remote_vm() static

JIRA: https://issues.redhat.com/browse/RHEL-27745

This patch is a backport of the following upstream commit:
commit c43cfa42541c04a3a94312e39ab81c41ba431277
Author: Lorenzo Stoakes <lstoakes@gmail.com>
Date:   Tue Oct 3 00:14:51 2023 +0100

    mm: make __access_remote_vm() static

    Patch series "various improvements to the GUP interface", v2.

    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.

    This patch (of 4):

    access_remote_vm() passes through parameters to __access_remote_vm()
    directly, so remove the __access_remote_vm() function from mm.h and use
    access_remote_vm() in the one caller that needs it (ptrace_access_vm()).

    This allows future adjustments to the GUP-internal __access_remote_vm()
    function while keeping the access_remote_vm() function stable.

    Link: https://lkml.kernel.org/r/cover.1696288092.git.lstoakes@gmail.com
    Link: https://lkml.kernel.org/r/f7877c5039ce1c202a514a8aeeefc5cdd5e32d19.1696288092.git.lstoakes@gmail.com
    Signed-off-by: Lorenzo Stoakes <lstoakes@gmail.com>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Jason Gunthorpe <jgg@nvidia.com>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Oleg Nesterov <oleg@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Richard Cochran <richardcochran@gmail.com>
    Cc: Will Deacon <will@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

Signed-off-by: Rafael Aquini <raquini@redhat.com>
This commit is contained in:
Rafael Aquini 2024-12-09 12:16:53 -05:00
parent dce5c250e1
commit 2472278b18
4 changed files with 5 additions and 7 deletions

View File

@ -2414,8 +2414,6 @@ extern int access_process_vm(struct task_struct *tsk, unsigned long addr,
void *buf, int len, unsigned int gup_flags);
extern int access_remote_vm(struct mm_struct *mm, unsigned long addr,
void *buf, int len, unsigned int gup_flags);
extern int __access_remote_vm(struct mm_struct *mm, unsigned long addr,
void *buf, int len, unsigned int gup_flags);
long get_user_pages_remote(struct mm_struct *mm,
unsigned long start, unsigned long nr_pages,

View File

@ -58,7 +58,7 @@ int ptrace_access_vm(struct task_struct *tsk, unsigned long addr,
return 0;
}
ret = __access_remote_vm(mm, addr, buf, len, gup_flags);
ret = access_remote_vm(mm, addr, buf, len, gup_flags);
mmput(mm);
return ret;

View File

@ -5769,8 +5769,8 @@ EXPORT_SYMBOL_GPL(generic_access_phys);
/*
* Access another process' address space as given in mm.
*/
int __access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf,
int len, unsigned int gup_flags)
static int __access_remote_vm(struct mm_struct *mm, unsigned long addr,
void *buf, int len, unsigned int gup_flags)
{
void *old_buf = buf;
int write = gup_flags & FOLL_WRITE;

View File

@ -1651,8 +1651,8 @@ vm_fault_t filemap_map_pages(struct vm_fault *vmf,
}
EXPORT_SYMBOL(filemap_map_pages);
int __access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf,
int len, unsigned int gup_flags)
static int __access_remote_vm(struct mm_struct *mm, unsigned long addr,
void *buf, int len, unsigned int gup_flags)
{
struct vm_area_struct *vma;
int write = gup_flags & FOLL_WRITE;