From: Nikita Kalyazin <[email protected]> Move the check for pinning closer to where the result is used. No functional changes.
Signed-off-by: Nikita Kalyazin <[email protected]> --- mm/gup.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/mm/gup.c b/mm/gup.c index 9cad53acbc99..e72dacce3e34 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -2737,18 +2737,9 @@ EXPORT_SYMBOL(get_user_pages_unlocked); */ static bool gup_fast_folio_allowed(struct folio *folio, unsigned int flags) { - bool reject_file_backed = false; struct address_space *mapping; unsigned long mapping_flags; - /* - * If we aren't pinning then no problematic write can occur. A long term - * pin is the most egregious case so this is the one we disallow. - */ - if ((flags & (FOLL_PIN | FOLL_LONGTERM | FOLL_WRITE)) == - (FOLL_PIN | FOLL_LONGTERM | FOLL_WRITE)) - reject_file_backed = true; - /* We hold a folio reference, so we can safely access folio fields. */ if (WARN_ON_ONCE(folio_test_slab(folio))) return false; @@ -2793,8 +2784,14 @@ static bool gup_fast_folio_allowed(struct folio *folio, unsigned int flags) */ if (secretmem_mapping(mapping)) return false; - /* The only remaining allowed file system is shmem. */ - return !reject_file_backed || shmem_mapping(mapping); + + /* + * If we aren't pinning then no problematic write can occur. A long term + * pin is the most egregious case so this is the one we disallow. + * Also check the only remaining allowed file system - shmem. + */ + return (flags & (FOLL_PIN | FOLL_LONGTERM | FOLL_WRITE)) != + (FOLL_PIN | FOLL_LONGTERM | FOLL_WRITE) || shmem_mapping(mapping); } static void __maybe_unused gup_fast_undo_dev_pagemap(int *nr, int nr_start, -- 2.50.1
