path: root/mm/Kconfig.debug
diff options
authorVlastimil Babka <>2019-07-11 20:55:06 -0700
committerLinus Torvalds <>2019-07-12 11:05:43 -0700
commit96a2b03f281d3a3b29c27028164f43090d6495b9 (patch)
tree1cd80436d7604f6660127b7208b27c4aaa3bbbac /mm/Kconfig.debug
parenta9659476d4b391aec3f5357f176b63b9f8c46231 (diff)
mm, debug_pagelloc: use static keys to enable debugging
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 031bc5743f15 ("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: Signed-off-by: Vlastimil Babka <> Reviewed-by: Andrew Morton <> Cc: Joonsoo Kim <> Cc: "Kirill A. Shutemov" <> Cc: Michal Hocko <> Cc: Vlastimil Babka <> Cc: Matthew Wilcox <> Cc: Mel Gorman <> Signed-off-by: Andrew Morton <> Signed-off-by: Linus Torvalds <>
Diffstat (limited to 'mm/Kconfig.debug')
0 files changed, 0 insertions, 0 deletions