The patch titled Subject: debugobjects: avoid recursive calls with kmemleak has been added to the -mm tree. Its filename is debugobjects-avoid-recursive-calls-with-kmemleak.patch This patch should soon appear at http://ozlabs.org/~akpm/mmots/broken-out/debugobjects-avoid-recursive-calls-with-kmemleak.patch and later at http://ozlabs.org/~akpm/mmotm/broken-out/debugobjects-avoid-recursive-calls-with-kmemleak.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Qian Cai <cai@xxxxxx> Subject: debugobjects: avoid recursive calls with kmemleak CONFIG_DEBUG_OBJECTS_RCU_HEAD does not play well with kmemleak due to recursive calls. fill_pool kmemleak_ignore make_black_object put_object __call_rcu (kernel/rcu/tree.c) debug_rcu_head_queue debug_object_activate debug_object_init fill_pool kmemleak_ignore make_black_object ... Hence, adding SLAB_NOLEAKTRACE to kmem_cache_create() to not register a newly allocated debug objects at all. Link: http://lkml.kernel.org/r/20181126165343.2339-1-cai@xxxxxx Signed-off-by: Qian Cai <cai@xxxxxx> Suggested-by: Catalin Marinas <catalin.marinas@xxxxxxx> Acked-by: Waiman Long <longman@xxxxxxxxxx> Acked-by: Catalin Marinas <catalin.marinas@xxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Yang Shi <yang.shi@xxxxxxxxxxxxxxxxx> Cc: Arnd Bergmann <arnd@xxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- --- a/lib/debugobjects.c~debugobjects-avoid-recursive-calls-with-kmemleak +++ a/lib/debugobjects.c @@ -135,7 +135,6 @@ static void fill_pool(void) if (!new) return; - kmemleak_ignore(new); raw_spin_lock_irqsave(&pool_lock, flags); hlist_add_head(&new->node, &obj_pool); debug_objects_allocated++; @@ -1128,7 +1127,6 @@ static int __init debug_objects_replace_ obj = kmem_cache_zalloc(obj_cache, GFP_KERNEL); if (!obj) goto free; - kmemleak_ignore(obj); hlist_add_head(&obj->node, &objects); } @@ -1184,7 +1182,8 @@ void __init debug_objects_mem_init(void) obj_cache = kmem_cache_create("debug_objects_cache", sizeof (struct debug_obj), 0, - SLAB_DEBUG_OBJECTS, NULL); + SLAB_DEBUG_OBJECTS | SLAB_NOLEAKTRACE, + NULL); if (!obj_cache || debug_objects_replace_static_objects()) { debug_objects_enabled = 0; _ Patches currently in -mm which might be from cai@xxxxxx are debugobjects-avoid-recursive-calls-with-kmemleak.patch