From: Qian Cai Date: Sat, 6 Apr 2019 22:59:01 +0000 (-0400) Subject: slab: fix a crash by reading /proc/slab_allocators X-Git-Tag: v4.19.42~30 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=78bc98235e843dd904aa8d0ea0111a5511cf41b9;p=platform%2Fkernel%2Flinux-rpi.git slab: fix a crash by reading /proc/slab_allocators [ Upstream commit fcf88917dd435c6a4cb2830cb086ee58605a1d85 ] The commit 510ded33e075 ("slab: implement slab_root_caches list") changes the name of the list node within "struct kmem_cache" from "list" to "root_caches_node", but leaks_show() still use the "list" which causes a crash when reading /proc/slab_allocators. You need to have CONFIG_SLAB=y and CONFIG_MEMCG=y to see the problem, because without MEMCG all slab caches are root caches, and the "list" node happens to be the right one. Fixes: 510ded33e075 ("slab: implement slab_root_caches list") Signed-off-by: Qian Cai Reviewed-by: Tobin C. Harding Cc: Tejun Heo Cc: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin --- diff --git a/mm/slab.c b/mm/slab.c index b8e0ec7..018d324 100644 --- a/mm/slab.c +++ b/mm/slab.c @@ -4305,7 +4305,8 @@ static void show_symbol(struct seq_file *m, unsigned long address) static int leaks_show(struct seq_file *m, void *p) { - struct kmem_cache *cachep = list_entry(p, struct kmem_cache, list); + struct kmem_cache *cachep = list_entry(p, struct kmem_cache, + root_caches_node); struct page *page; struct kmem_cache_node *n; const char *name;