From: Qian Cai <c...@gmx.us> [ Upstream commit 8de456cf87ba863e028c4dd01bae44255ce3d835 ]
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 ... So add SLAB_NOLEAKTRACE to kmem_cache_create() to not register newly allocated debug objects at all. Link: http://lkml.kernel.org/r/20181126165343.2339-1-...@gmx.us Signed-off-by: Qian Cai <c...@gmx.us> Suggested-by: Catalin Marinas <catalin.mari...@arm.com> Acked-by: Waiman Long <long...@redhat.com> Acked-by: Catalin Marinas <catalin.mari...@arm.com> Cc: Thomas Gleixner <t...@linutronix.de> Cc: Yang Shi <yang....@linux.alibaba.com> Cc: Arnd Bergmann <a...@arndb.de> Signed-off-by: Andrew Morton <a...@linux-foundation.org> Signed-off-by: Linus Torvalds <torva...@linux-foundation.org> Signed-off-by: Sasha Levin <sas...@kernel.org> --- lib/debugobjects.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/debugobjects.c b/lib/debugobjects.c index a26328ec39f1..bb37541cd441 100644 --- a/lib/debugobjects.c +++ b/lib/debugobjects.c @@ -1088,7 +1088,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; -- 2.17.1