Since compound_head() rework we encode PageTail() into bit 0 of page->lru.next (aka page->compound_head). We need to make sure that page->lru is initialized before first use of compound_head() or PageTail().
My page-flags patchset makes sure that we don't use PG_reserved on compound pages. That means we have PageTail() check as eary as in SetPageReserved() in reserve_bootmem_region() Let's initialize page->lru before that to avoid false positive from PageTail(). Signed-off-by: Kirill A. Shutemov <kirill.shute...@linux.intel.com> --- Andrew, this can be folded into "mm: make compound_head() robust" --- mm/page_alloc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 778eb3a0f103..95fbc43a93dd 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -926,8 +926,6 @@ static void init_reserved_page(unsigned long pfn) #else static inline void init_reserved_page(unsigned long pfn) { - /* Avoid false-positive PageTail() */ - INIT_LIST_HEAD(&pfn_to_page(pfn)->lru); } #endif /* CONFIG_DEFERRED_STRUCT_PAGE_INIT */ @@ -947,6 +945,10 @@ void __meminit reserve_bootmem_region(unsigned long start, unsigned long end) struct page *page = pfn_to_page(start_pfn); init_reserved_page(start_pfn); + + /* Avoid false-positive PageTail() */ + INIT_LIST_HEAD(&page->lru); + SetPageReserved(page); } } -- 2.5.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/