[patch 13/19] mm, slub: fix potential use-after-free in slab_debugfs_fops
From: Andrew Morton <akpm@linux-foundation.org>
Date: 2021-10-18 22:16:05
Also in:
linux-mm, mm-commits
From: Miaohe Lin <linmiaohe@huawei.com> Subject: mm, slub: fix potential use-after-free in slab_debugfs_fops When sysfs_slab_add failed, we shouldn't call debugfs_slab_add() for s because s will be freed soon. And slab_debugfs_fops will use s later leading to a use-after-free. Link: https://lkml.kernel.org/r/20210916123920.48704-5-linmiaohe@huawei.com Fixes: 64dd68497be7 ("mm: slub: move sysfs slab alloc/free interfaces to debugfs") Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> Reviewed-by: Vlastimil Babka <redacted> Cc: Andrey Konovalov <andreyknvl@gmail.com> Cc: Andrey Ryabinin <ryabinin.a.a@gmail.com> Cc: Bharata B Rao <redacted> Cc: Christoph Lameter <redacted> Cc: David Rientjes <rientjes@google.com> Cc: Faiyaz Mohammed <redacted> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Joonsoo Kim <redacted> Cc: Kees Cook <redacted> Cc: Pekka Enberg <penberg@kernel.org> Cc: Roman Gushchin <redacted> Cc: <redacted> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> --- mm/slub.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
--- a/mm/slub.c~mm-slub-fix-potential-use-after-free-in-slab_debugfs_fops
+++ a/mm/slub.c@@ -4887,13 +4887,15 @@ int __kmem_cache_create(struct kmem_cach return 0; err = sysfs_slab_add(s); - if (err) + if (err) { __kmem_cache_release(s); + return err; + } if (s->flags & SLAB_STORE_USER) debugfs_slab_add(s); - return err; + return 0; } void *__kmalloc_track_caller(size_t size, gfp_t gfpflags, unsigned long caller)
_