diff --git a/mm/gup.c b/mm/gup.c index 497d7ce43d39..00ac2df7164c 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -1975,7 +1975,8 @@ static unsigned long collect_longterm_unpinnable_pages( continue; } - if (!folio_test_lru(folio) && drain_allow) { + if (drain_allow && folio_ref_count(folio) != + folio_expected_ref_count(folio) + 1) { lru_add_drain_all(); drain_allow = false; }