From: Zhaoyang Huang <zhaoyang.huang@xxxxxxxxxx> High-order pcp page escaped from checking when both of DEBUG_VM and debug_pagealloc are all disabled if it allocated again from pcp_list without going to global free list, which should be introduced by 44042b4498. fix:44042b4498 Signed-off-by: Zhaoyang Huang <zhaoyang.huang@xxxxxxxxxx> --- changes of v2: update comments --- --- mm/page_alloc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index e008a3d..b54976d 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1412,7 +1412,7 @@ static __always_inline bool free_pages_prepare(struct page *page, #ifdef CONFIG_DEBUG_VM /* - * With DEBUG_VM enabled, order-0 pages are checked immediately when being freed + * With DEBUG_VM enabled, pages are checked immediately when being freed * to pcp lists. With debug_pagealloc also enabled, they are also rechecked when * moved from pcp lists to free lists. */ @@ -1430,14 +1430,14 @@ static bool bulkfree_pcp_prepare(struct page *page) } #else /* - * With DEBUG_VM disabled, order-0 pages being freed are checked only when + * With DEBUG_VM disabled, pages being freed are checked only when * moving from pcp lists to free list in order to reduce overhead. With * debug_pagealloc enabled, they are checked also immediately when being freed * to the pcp lists. */ static bool free_pcp_prepare(struct page *page, unsigned int order) { - if (debug_pagealloc_enabled_static()) + if (debug_pagealloc_enabled_static() || order) return free_pages_prepare(page, order, true, FPI_NONE); else return free_pages_prepare(page, order, false, FPI_NONE); -- 1.9.1