mm/page_ext: enable early_page_ext when CONFIG_MEM_ALLOC_PROFILING_DEBUG=y
For all page allocations to be tagged, page_ext has to be initialized before the first page allocation. Early tasks allocate their stacks using page allocator before alloc_node_page_ext() initializes page_ext area, unless early_page_ext is enabled. Therefore these allocations will generate a warning when CONFIG_MEM_ALLOC_PROFILING_DEBUG is enabled. Enable early_page_ext whenever CONFIG_MEM_ALLOC_PROFILING_DEBUG=y to ensure page_ext initialization prior to any page allocation. This will have all the negative effects associated with early_page_ext, such as possible longer boot time, therefore we enable it only when debugging with CONFIG_MEM_ALLOC_PROFILING_DEBUG enabled and not universally for CONFIG_MEM_ALLOC_PROFILING. Link: https://lkml.kernel.org/r/20240321163705.3067592-22-surenb@google.com Signed-off-by: Suren Baghdasaryan <surenb@google.com> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Tested-by: Kees Cook <keescook@chromium.org> Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: Alex Gaynor <alex.gaynor@gmail.com> Cc: Alice Ryhl <aliceryhl@google.com> Cc: Andreas Hindborg <a.hindborg@samsung.com> Cc: Benno Lossin <benno.lossin@proton.me> Cc: "Björn Roy Baron" <bjorn3_gh@protonmail.com> Cc: Boqun Feng <boqun.feng@gmail.com> Cc: Christoph Lameter <cl@linux.com> Cc: Dennis Zhou <dennis@kernel.org> Cc: Gary Guo <gary@garyguo.net> Cc: Kent Overstreet <kent.overstreet@linux.dev> Cc: Miguel Ojeda <ojeda@kernel.org> Cc: Pasha Tatashin <pasha.tatashin@soleen.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Tejun Heo <tj@kernel.org> Cc: Wedson Almeida Filho <wedsonaf@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>pull/864/merge
parent
cc92eba1c8
commit
26865a1bfa
|
|
@ -95,7 +95,16 @@ unsigned long page_ext_size;
|
||||||
|
|
||||||
static unsigned long total_usage;
|
static unsigned long total_usage;
|
||||||
|
|
||||||
|
#ifdef CONFIG_MEM_ALLOC_PROFILING_DEBUG
|
||||||
|
/*
|
||||||
|
* To ensure correct allocation tagging for pages, page_ext should be available
|
||||||
|
* before the first page allocation. Otherwise early task stacks will be
|
||||||
|
* allocated before page_ext initialization and missing tags will be flagged.
|
||||||
|
*/
|
||||||
|
bool early_page_ext __meminitdata = true;
|
||||||
|
#else
|
||||||
bool early_page_ext __meminitdata;
|
bool early_page_ext __meminitdata;
|
||||||
|
#endif
|
||||||
static int __init setup_early_page_ext(char *str)
|
static int __init setup_early_page_ext(char *str)
|
||||||
{
|
{
|
||||||
early_page_ext = true;
|
early_page_ext = true;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue