• Wang Hai's avatar
    Revert "mm/slub: fix a memory leak in sysfs_slab_add()" · 757fed1d
    Wang Hai authored
    This reverts commit dde3c6b7.
    
    syzbot report a double-free bug. The following case can cause this bug.
    
     - mm/slab_common.c: create_cache(): if the __kmem_cache_create() fails,
       it does:
    
    	out_free_cache:
    		kmem_cache_free(kmem_cache, s);
    
     - but __kmem_cache_create() - at least for slub() - will have done
    
    	sysfs_slab_add(s)
    		-> sysfs_create_group() .. fails ..
    		-> kobject_del(&s->kobj); .. which frees s ...
    
    We can't remove the kmem_cache_free() in create_cache(), because other
    error cases of __kmem_cache_create() do not free this.
    
    So, revert the commit dde3c6b7 ("mm/slub: fix a memory leak in
    sysfs_slab_add()") to fix this.
    
    Reported-by: syzbot+d0bd96b4696c1ef67991@syzkaller.appspotmail.com
    Fixes: dde3c6b7 ("mm/slub: fix a memory leak in sysfs_slab_add()")
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Signed-off-by: default avatarWang Hai <wanghai38@huawei.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    757fed1d
slub.c 141 KB