[PATCH] mm/shmem: make find_get_pages_range() work for huge page

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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.

Signed-off-by: Yu Zhao <yuzhao@xxxxxxxxxx>
---
 mm/filemap.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/mm/filemap.c b/mm/filemap.c
index 81adec8ee02c..cf5fd773314a 100644
--- a/mm/filemap.c
+++ b/mm/filemap.c
@@ -1704,7 +1704,7 @@ unsigned find_get_pages_range(struct address_space *mapping, pgoff_t *start,
 
 		pages[ret] = page;
 		if (++ret == nr_pages) {
-			*start = page->index + 1;
+			*start = xas.xa_index + 1;
 			goto out;
 		}
 		continue;
@@ -1850,7 +1850,7 @@ unsigned find_get_pages_range_tag(struct address_space *mapping, pgoff_t *index,
 
 		pages[ret] = page;
 		if (++ret == nr_pages) {
-			*index = page->index + 1;
+			*index = xas.xa_index + 1;
 			goto out;
 		}
 		continue;
-- 
2.20.1.97.g81188d93c3-goog




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux