mm: remove follow_page()

All users are gone, let's remove it and any leftovers in comments.  We'll
leave any FOLL/follow_page_() naming cleanups as future work.

Link: https://lkml.kernel.org/r/20240802155524.517137-11-david@redhat.com
Signed-off-by: David Hildenbrand <david@redhat.com>
Cc: Alexander Gordeev <agordeev@linux.ibm.com>
Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: Claudio Imbrenda <imbrenda@linux.ibm.com>
Cc: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Cc: Heiko Carstens <hca@linux.ibm.com>
Cc: Janosch Frank <frankja@linux.ibm.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Sven Schnelle <svens@linux.ibm.com>
Cc: Vasily Gorbik <gor@linux.ibm.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
David Hildenbrand 2024-08-02 17:55:23 +02:00 committed by Andrew Morton
parent 0b31a3cef4
commit 7290840de6
5 changed files with 5 additions and 36 deletions

View File

@ -31,10 +31,10 @@ Design principles
feature that applies to all dynamic high order allocations in the feature that applies to all dynamic high order allocations in the
kernel) kernel)
get_user_pages and follow_page get_user_pages and pin_user_pages
============================== =================================
get_user_pages and follow_page if run on a hugepage, will return the get_user_pages and pin_user_pages if run on a hugepage, will return the
head or tail pages as usual (exactly as they would do on head or tail pages as usual (exactly as they would do on
hugetlbfs). Most GUP users will only care about the actual physical hugetlbfs). Most GUP users will only care about the actual physical
address of the page and its temporary pinning to release after the I/O address of the page and its temporary pinning to release after the I/O

View File

@ -3527,9 +3527,6 @@ static inline vm_fault_t vmf_fs_error(int err)
return VM_FAULT_SIGBUS; return VM_FAULT_SIGBUS;
} }
struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
unsigned int foll_flags);
static inline int vm_fault_to_errno(vm_fault_t vm_fault, int foll_flags) static inline int vm_fault_to_errno(vm_fault_t vm_fault, int foll_flags)
{ {
if (vm_fault & VM_FAULT_OOM) if (vm_fault & VM_FAULT_OOM)

View File

@ -112,7 +112,7 @@
* ->swap_lock (try_to_unmap_one) * ->swap_lock (try_to_unmap_one)
* ->private_lock (try_to_unmap_one) * ->private_lock (try_to_unmap_one)
* ->i_pages lock (try_to_unmap_one) * ->i_pages lock (try_to_unmap_one)
* ->lruvec->lru_lock (follow_page->mark_page_accessed) * ->lruvec->lru_lock (follow_page_mask->mark_page_accessed)
* ->lruvec->lru_lock (check_pte_range->isolate_lru_page) * ->lruvec->lru_lock (check_pte_range->isolate_lru_page)
* ->private_lock (folio_remove_rmap_pte->set_page_dirty) * ->private_lock (folio_remove_rmap_pte->set_page_dirty)
* ->i_pages lock (folio_remove_rmap_pte->set_page_dirty) * ->i_pages lock (folio_remove_rmap_pte->set_page_dirty)

View File

@ -1072,28 +1072,6 @@ static struct page *follow_page_mask(struct vm_area_struct *vma,
return page; return page;
} }
struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
unsigned int foll_flags)
{
struct follow_page_context ctx = { NULL };
struct page *page;
if (vma_is_secretmem(vma))
return NULL;
if (WARN_ON_ONCE(foll_flags & FOLL_PIN))
return NULL;
/*
* We never set FOLL_HONOR_NUMA_FAULT because callers don't expect
* to fail on PROT_NONE-mapped pages.
*/
page = follow_page_mask(vma, address, foll_flags, &ctx);
if (ctx.pgmap)
put_dev_pagemap(ctx.pgmap);
return page;
}
static int get_gate_page(struct mm_struct *mm, unsigned long address, static int get_gate_page(struct mm_struct *mm, unsigned long address,
unsigned int gup_flags, struct vm_area_struct **vma, unsigned int gup_flags, struct vm_area_struct **vma,
struct page **page) struct page **page)
@ -2519,7 +2497,7 @@ static bool is_valid_gup_args(struct page **pages, int *locked,
* These flags not allowed to be specified externally to the gup * These flags not allowed to be specified externally to the gup
* interfaces: * interfaces:
* - FOLL_TOUCH/FOLL_PIN/FOLL_TRIED/FOLL_FAST_ONLY are internal only * - FOLL_TOUCH/FOLL_PIN/FOLL_TRIED/FOLL_FAST_ONLY are internal only
* - FOLL_REMOTE is internal only and used on follow_page() * - FOLL_REMOTE is internal only, set in (get|pin)_user_pages_remote()
* - FOLL_UNLOCKABLE is internal only and used if locked is !NULL * - FOLL_UNLOCKABLE is internal only and used if locked is !NULL
*/ */
if (WARN_ON_ONCE(gup_flags & INTERNAL_GUP_FLAGS)) if (WARN_ON_ONCE(gup_flags & INTERNAL_GUP_FLAGS))

View File

@ -1578,12 +1578,6 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
return ret; return ret;
} }
struct page *follow_page(struct vm_area_struct *vma, unsigned long address,
unsigned int foll_flags)
{
return NULL;
}
int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr, int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
unsigned long pfn, unsigned long size, pgprot_t prot) unsigned long pfn, unsigned long size, pgprot_t prot)
{ {