mm: gup: move pmd_protnone() into gup_fast_pmd_leaf()

Patch series "mm: gup: cleanup gup_fast call chain", v3.

These two patches implement the refactor in gup_fast call chain David
Hildenbrand mentioned in [1].


This patch (of 2):	

Make pmd handling match pud handling by calling pmd_protnone() inside
gup_fast_pmd_leaf().

Link: https://lore.kernel.org/20260828015542.125576330@ruivo.org
Link: https://lore.kernel.org/20260828015542.245315718@ruivo.org
Link: https://lore.kernel.org/all/85e760cf-b994-40db-8d13-221feee55c60@redhat.com/T/#u [1]
Signed-off-by: Aristeu Rozanski <aris@ruivo.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Suggested-by: David Hildenbrand <david@kernel.org>
Link: https://lore.kernel.org/all/85e760cf-b994-40db-8d13-221feee55c60@redhat.com/T/#u
Acked-by: David Hildenbrand (Arm) <david@kernel.org>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: John Hubbard <jhubbard@nvidia.com>
Cc: Peter Xu <peterx@redhat.com>
This commit is contained in:
Aristeu Rozanski 2026-08-27 21:55:43 -04:00 committed by Andrew Morton
parent 5e3bd0c75c
commit fed3c5ac4a

View File

@ -2929,6 +2929,10 @@ static int gup_fast_pmd_leaf(pmd_t orig, pmd_t *pmdp, unsigned long addr,
struct folio *folio;
int refs;
/* See gup_fast_pte_range() */
if (pmd_protnone(orig))
return 0;
if (!pmd_access_permitted(orig, flags & FOLL_WRITE))
return 0;
@ -3024,10 +3028,6 @@ static int gup_fast_pmd_range(pud_t *pudp, pud_t pud, unsigned long addr,
return 0;
if (unlikely(pmd_leaf(pmd))) {
/* See gup_fast_pte_range() */
if (pmd_protnone(pmd))
return 0;
if (!gup_fast_pmd_leaf(pmd, pmdp, addr, next, flags,
pages, nr))
return 0;