mirror of
https://github.com/torvalds/linux.git
synced 2024-11-11 14:42:24 +00:00
mm/gup: make get_user_pages_fast_only() return the common return value
There are only two callers, both can handle the common return code: - get_user_page_fast_only() checks == 1 - gfn_to_page_many_atomic() already returns -1, and the only caller checks for negative return values Remove the restriction against returning negative values. Link: https://lkml.kernel.org/r/11-v2-987e91b59705+36b-gup_tidy_jgg@nvidia.com Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Acked-by: Mike Rapoport (IBM) <rppt@kernel.org> Reviewed-by: John Hubbard <jhubbard@nvidia.com> Reviewed-by: David Hildenbrand <david@redhat.com> Cc: Alistair Popple <apopple@nvidia.com> Cc: Christoph Hellwig <hch@infradead.org> Cc: Claudio Imbrenda <imbrenda@linux.ibm.com> Cc: David Howells <dhowells@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
edad1bb1fb
commit
9198a9196e
17
mm/gup.c
17
mm/gup.c
@ -3005,8 +3005,6 @@ static int internal_get_user_pages_fast(unsigned long start,
|
||||
*
|
||||
* Like get_user_pages_fast() except it's IRQ-safe in that it won't fall back to
|
||||
* the regular GUP.
|
||||
* Note a difference with get_user_pages_fast: this always returns the
|
||||
* number of pages pinned, 0 if no pages were pinned.
|
||||
*
|
||||
* If the architecture does not support this function, simply return with no
|
||||
* pages pinned.
|
||||
@ -3018,7 +3016,6 @@ static int internal_get_user_pages_fast(unsigned long start,
|
||||
int get_user_pages_fast_only(unsigned long start, int nr_pages,
|
||||
unsigned int gup_flags, struct page **pages)
|
||||
{
|
||||
int nr_pinned;
|
||||
/*
|
||||
* Internally (within mm/gup.c), gup fast variants must set FOLL_GET,
|
||||
* because gup fast is always a "pin with a +1 page refcount" request.
|
||||
@ -3030,19 +3027,7 @@ int get_user_pages_fast_only(unsigned long start, int nr_pages,
|
||||
FOLL_GET | FOLL_FAST_ONLY))
|
||||
return -EINVAL;
|
||||
|
||||
nr_pinned = internal_get_user_pages_fast(start, nr_pages, gup_flags,
|
||||
pages);
|
||||
|
||||
/*
|
||||
* As specified in the API description above, this routine is not
|
||||
* allowed to return negative values. However, the common core
|
||||
* routine internal_get_user_pages_fast() *can* return -errno.
|
||||
* Therefore, correct for that here:
|
||||
*/
|
||||
if (nr_pinned < 0)
|
||||
nr_pinned = 0;
|
||||
|
||||
return nr_pinned;
|
||||
return internal_get_user_pages_fast(start, nr_pages, gup_flags, pages);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(get_user_pages_fast_only);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user