Files
erofs-linux/mm
John Hubbard c36c04c2e1 Revert "mm/gup: small refactoring: simplify try_grab_page()"
This reverts commit 54d516b1d6

That commit did a refactoring that effectively combined fast and slow
gup paths (again).  And that was again incorrect, for two reasons:

 a) Fast gup and slow gup get reference counts on pages in different
    ways and with different goals: see Linus' writeup in commit
    cd1adf1b63 ("Revert "mm/gup: remove try_get_page(), call
    try_get_compound_head() directly""), and

 b) try_grab_compound_head() also has a specific check for
    "FOLL_LONGTERM && !is_pinned(page)", that assumes that the caller
    can fall back to slow gup. This resulted in new failures, as
    recently report by Will McVicker [1].

But (a) has problems too, even though they may not have been reported
yet.  So just revert this.

Link: https://lore.kernel.org/r/[email protected] [1]
Fixes: 54d516b1d6 ("mm/gup: small refactoring: simplify try_grab_page()")
Reported-and-tested-by: Will McVicker <[email protected]>
Cc: Christoph Hellwig <[email protected]>
Cc: Minchan Kim <[email protected]>
Cc: Matthew Wilcox <[email protected]>
Cc: Christian Borntraeger <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Vasily Gorbik <[email protected]>
Cc: [email protected] # 5.15
Signed-off-by: John Hubbard <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
2022-02-03 06:51:42 -08:00
..
…
…
…
2022-01-22 08:33:38 +02:00
2022-01-15 16:30:28 +02:00
…
2022-01-22 08:33:38 +02:00
…
…
…
…
…
2022-01-15 16:30:28 +02:00
…
2022-01-22 08:33:38 +02:00
…
…
2022-01-22 08:33:38 +02:00
2022-01-15 16:30:30 +02:00
…
…
2022-01-15 16:30:31 +02:00