aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mm/huge_memory.c5
-rw-r--r--mm/swap.c2
2 files changed, 3 insertions, 4 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 5a595554bd8c..76cc3f7dd4f0 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -1228,7 +1228,6 @@ static int __split_huge_page_splitting(struct page *page,
1228static void __split_huge_page_refcount(struct page *page) 1228static void __split_huge_page_refcount(struct page *page)
1229{ 1229{
1230 int i; 1230 int i;
1231 unsigned long head_index = page->index;
1232 struct zone *zone = page_zone(page); 1231 struct zone *zone = page_zone(page);
1233 int zonestat; 1232 int zonestat;
1234 int tail_count = 0; 1233 int tail_count = 0;
@@ -1239,7 +1238,7 @@ static void __split_huge_page_refcount(struct page *page)
1239 /* complete memcg works before add pages to LRU */ 1238 /* complete memcg works before add pages to LRU */
1240 mem_cgroup_split_huge_fixup(page); 1239 mem_cgroup_split_huge_fixup(page);
1241 1240
1242 for (i = 1; i < HPAGE_PMD_NR; i++) { 1241 for (i = HPAGE_PMD_NR - 1; i >= 1; i--) {
1243 struct page *page_tail = page + i; 1242 struct page *page_tail = page + i;
1244 1243
1245 /* tail_page->_mapcount cannot change */ 1244 /* tail_page->_mapcount cannot change */
@@ -1302,7 +1301,7 @@ static void __split_huge_page_refcount(struct page *page)
1302 BUG_ON(page_tail->mapping); 1301 BUG_ON(page_tail->mapping);
1303 page_tail->mapping = page->mapping; 1302 page_tail->mapping = page->mapping;
1304 1303
1305 page_tail->index = ++head_index; 1304 page_tail->index = page->index + i;
1306 1305
1307 BUG_ON(!PageAnon(page_tail)); 1306 BUG_ON(!PageAnon(page_tail));
1308 BUG_ON(!PageUptodate(page_tail)); 1307 BUG_ON(!PageUptodate(page_tail));
diff --git a/mm/swap.c b/mm/swap.c
index 126da2919f60..ddccf8e0b4ae 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -681,7 +681,7 @@ void lru_add_page_tail(struct zone* zone,
681 if (likely(PageLRU(page))) 681 if (likely(PageLRU(page)))
682 list_add(&page_tail->lru, page->lru.prev); 682 list_add(&page_tail->lru, page->lru.prev);
683 else 683 else
684 list_add(&page_tail->lru, &lruvec->lists[lru]); 684 list_add(&page_tail->lru, lruvec->lists[lru].prev);
685 __mod_zone_page_state(zone, NR_LRU_BASE + lru, 685 __mod_zone_page_state(zone, NR_LRU_BASE + lru,
686 hpage_nr_pages(page_tail)); 686 hpage_nr_pages(page_tail));
687 } else { 687 } else {