diff --git a/mm/vmscan.c b/mm/vmscan.c index 3dbbc2041096..8fa3ca7d94ff 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -2097,7 +2097,6 @@ static unsigned move_active_pages_to_lru(struct lruvec *lruvec, { struct pglist_data *pgdat = lruvec_pgdat(lruvec); struct page *page; - int nr_pages; int nr_moved = 0; while (!list_empty(list)) { @@ -2105,11 +2104,9 @@ static unsigned move_active_pages_to_lru(struct lruvec *lruvec, lruvec = mem_cgroup_page_lruvec(page, pgdat); VM_BUG_ON_PAGE(PageLRU(page), page); + list_del(&page->lru); SetPageLRU(page); - - nr_pages = hpage_nr_pages(page); - update_lru_size(lruvec, lru, page_zonenum(page), nr_pages); - list_move(&page->lru, &lruvec->lists[lru]); + add_page_to_lru_list(page, lruvec, lru); if (put_page_testzero(page)) { __ClearPageLRU(page); @@ -2124,7 +2121,7 @@ static unsigned move_active_pages_to_lru(struct lruvec *lruvec, } else list_add(&page->lru, pages_to_free); } else { - nr_moved += nr_pages; + nr_moved += hpage_nr_pages(page); } }