From: Yu Zhao Date: Wed, 10 Dec 2014 23:43:17 +0000 (-0800) Subject: mm: verify compound order when freeing a page X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=ab1f306fa92f4d875c8f0b9e9f90e27ca8e7b37b;p=GitHub%2FLineageOS%2FG12%2Fandroid_kernel_amlogic_linux-4.9.git mm: verify compound order when freeing a page This allows us to catch the bug fixed in the previous patch (mm: free compound page with correct order). Here we also verify whether a page is tail page or not -- tail pages are supposed to be freed along with their head, not by themselves. Signed-off-by: Yu Zhao Reviewed-by: "Kirill A. Shutemov" Cc: Andrea Arcangeli Cc: Mel Gorman Cc: David Rientjes Cc: Bob Liu Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/mm/page_alloc.c b/mm/page_alloc.c index f3a6bf12cbc1..b7c18f094697 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -741,6 +741,9 @@ static bool free_pages_prepare(struct page *page, unsigned int order) int i; int bad = 0; + VM_BUG_ON_PAGE(PageTail(page), page); + VM_BUG_ON_PAGE(PageHead(page) && compound_order(page) != order, page); + trace_mm_page_free(page, order); kmemcheck_free_shadow(page, order);