diff --git a/[refs] b/[refs] index 33494954dbd9..781264dfd844 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9180706344487700b40da9eca5dedd3d11cb33b4 +refs/heads/master: a95a82e96c48270980dd248ccd5546f1b49e6f8a diff --git a/trunk/mm/swap.c b/trunk/mm/swap.c index 33f5292fe132..e0eeef940886 100644 --- a/trunk/mm/swap.c +++ b/trunk/mm/swap.c @@ -131,8 +131,12 @@ static void put_compound_page(struct page *page) atomic_dec(&page->_count); VM_BUG_ON(atomic_read(&page_head->_count) <= 0); compound_unlock_irqrestore(page_head, flags); - if (put_page_testzero(page_head)) - __put_compound_page(page_head); + if (put_page_testzero(page_head)) { + if (PageHead(page_head)) + __put_compound_page(page_head); + else + __put_single_page(page_head); + } } else { /* page_head is a dangling pointer */ VM_BUG_ON(PageTail(page));