X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=mm%2Fswap.c;h=844baedd24292f0803ddadb2a2be03a754ec150b;hb=8b2f63ab05eb233b2b396e133889ce3d1d30d944;hp=75c63bb2a1da1dc0c3e55600e9db1618949df87a;hpb=2ab704a47e0f27df758840a589aec3298dbb98dd;p=karo-tx-linux.git diff --git a/mm/swap.c b/mm/swap.c index 75c63bb2a1da..844baedd2429 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -69,6 +69,7 @@ static void __page_cache_release(struct page *page) del_page_from_lru_list(page, lruvec, page_off_lru(page)); spin_unlock_irqrestore(zone_lru_lock(zone), flags); } + __ClearPageWaiters(page); mem_cgroup_uncharge(page); } @@ -748,10 +749,8 @@ void release_pages(struct page **pages, int nr, bool cold) locked_pgdat = NULL; } - if (is_huge_zero_page(page)) { - put_huge_zero_page(); + if (is_huge_zero_page(page)) continue; - } page = compound_head(page); if (!put_page_testzero(page)) @@ -786,6 +785,7 @@ void release_pages(struct page **pages, int nr, bool cold) /* Clear Active bit in case of parallel mark_page_accessed */ __ClearPageActive(page); + __ClearPageWaiters(page); list_add(&page->lru, &pages_to_free); }