mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
mm: kmemleak: use the memory pool for early allocations
Currently kmemleak uses a static early_log buffer to trace all memory allocation/freeing before the slab allocator is initialised. Such early log is replayed during kmemleak_init() to properly initialise the kmemleak metadata for objects allocated up that point. With a memory pool that does not rely on the slab allocator, it is possible to skip this early log entirely. In order to remove the early logging, consider kmemleak_enabled == 1 by default while the kmem_cache availability is checked directly on the object_cache and scan_area_cache variables. The RCU callback is only invoked after object_cache has been initialised as we wouldn't have any concurrent list traversal before this. In order to reduce the number of callbacks before kmemleak is fully initialised, move the kmemleak_init() call to mm_init(). [[email protected]: coding-style fixes] [[email protected]: remove WARN_ON(), per Catalin] Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Catalin Marinas <[email protected]> Cc: Matthew Wilcox <[email protected]> Cc: Michal Hocko <[email protected]> Cc: Qian Cai <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
0647398a8c
commit
c566586818
3 changed files with 33 additions and 245 deletions
|
|
@ -556,6 +556,7 @@ static void __init mm_init(void)
|
|||
report_meminit();
|
||||
mem_init();
|
||||
kmem_cache_init();
|
||||
kmemleak_init();
|
||||
pgtable_init();
|
||||
debug_objects_mem_init();
|
||||
vmalloc_init();
|
||||
|
|
@ -740,7 +741,6 @@ asmlinkage __visible void __init start_kernel(void)
|
|||
initrd_start = 0;
|
||||
}
|
||||
#endif
|
||||
kmemleak_init();
|
||||
setup_per_cpu_pageset();
|
||||
numa_policy_init();
|
||||
acpi_early_init();
|
||||
|
|
|
|||
Loading…
Reference in a new issue