• Vlastimil Babka's avatar
    mm, debug_pagelloc: use static keys to enable debugging · 96a2b03f
    Vlastimil Babka authored
    Patch series "debug_pagealloc improvements".
    
    I have been recently debugging some pcplist corruptions, where it would be
    useful to perform struct page checks immediately as pages are allocated
    from and freed to pcplists, which is now only possible by rebuilding the
    kernel with CONFIG_DEBUG_VM (details in Patch 2 changelog).
    
    To make this kind of debugging simpler in future on a distro kernel, I
    have improved CONFIG_DEBUG_PAGEALLOC so that it has even smaller overhead
    when not enabled at boot time (Patch 1) and also when enabled (Patch 3),
    and extended it to perform the struct page checks more often when enabled
    (Patch 2).  Now it can be configured in when building a distro kernel
    without extra overhead, and debugging page use after free or double free
    can be enabled simply by rebooting with debug_pagealloc=on.
    
    This patch (of 3):
    
    CONFIG_DEBUG_PAGEALLOC has been redesigned by 031bc574
    ("mm/debug-pagealloc: make debug-pagealloc boottime configurable") to
    allow being always enabled in a distro kernel, but only perform its
    expensive functionality when booted with debug_pagelloc=on.  We can
    further reduce the overhead when not boot-enabled (including page
    allocator fast paths) using static keys.  This patch introduces one for
    debug_pagealloc core functionality, and another for the optional guard
    page functionality (enabled by booting with debug_guardpage_minorder=X).
    
    Link: http://lkml.kernel.org/r/20190603143451.27353-2-vbabka@suse.czSigned-off-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Michal Hocko <mhocko@kernel.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Matthew Wilcox <willy@infradead.org>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    96a2b03f
page_alloc.c 235 KB