Skip to content

Commit 5d3ee42

Browse files
Yu Zhaotorvalds
authored andcommitted
mm/shmem: make find_get_pages_range() work for huge page
find_get_pages_range() and find_get_pages_range_tag() already correctly increment reference count on head when seeing compound page, but they may still use page index from tail. Page index from tail is always zero, so these functions don't work on huge shmem. This hasn't been a problem because, AFAIK, nobody calls these functions on (huge) shmem. Fix them anyway just in case. Link: http://lkml.kernel.org/r/20190110030838.84446-1-yuzhao@google.com Signed-off-by: Yu Zhao <yuzhao@google.com> Reviewed-by: William Kucharski <william.kucharski@oracle.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Amir Goldstein <amir73il@gmail.com> Cc: Dave Chinner <david@fromorbit.com> Cc: "Darrick J . Wong" <darrick.wong@oracle.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Souptick Joarder <jrdr.linux@gmail.com> Cc: Hugh Dickins <hughd@google.com> Cc: "Kirill A . Shutemov" <kirill.shutemov@linux.intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent afa0011 commit 5d3ee42

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

mm/filemap.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1789,7 +1789,7 @@ unsigned find_get_pages_range(struct address_space *mapping, pgoff_t *start,
17891789

17901790
pages[ret] = page;
17911791
if (++ret == nr_pages) {
1792-
*start = page->index + 1;
1792+
*start = xas.xa_index + 1;
17931793
goto out;
17941794
}
17951795
continue;
@@ -1927,7 +1927,7 @@ unsigned find_get_pages_range_tag(struct address_space *mapping, pgoff_t *index,
19271927

19281928
pages[ret] = page;
19291929
if (++ret == nr_pages) {
1930-
*index = page->index + 1;
1930+
*index = xas.xa_index + 1;
19311931
goto out;
19321932
}
19331933
continue;

0 commit comments

Comments
 (0)