• Chao Yu's avatar
    f2fs: fix memory leak of kobject in error path of fill_super · 29ba108d
    Chao Yu authored
    f2fs_sb_info::s_kobj should be released in error path of fill_super,
    otherwise it will lead to memory leak.
    
    This bug was found by kmemleak:
    
    dmesg:
    kmemleak: 2 new suspected memory leaks (see /sys/kernel/debug/kmemleak)
    
    cat /sys/kernel/debug/kmemleak
    unreferenced object 0xffff8800838dc358 (size 8):
      comm "mount", pid 4154, jiffies 4297482839 (age 1911.412s)
      hex dump (first 8 bytes):
        7a 72 61 6d 31 00 ff ff                          zram1...
      backtrace:
        [<ffffffff817a3668>] kmemleak_alloc+0x28/0x50
        [<ffffffff811dc99f>] __kmalloc_track_caller+0xef/0x1c0
        [<ffffffff8119d1c5>] kstrdup+0x45/0x80
        [<ffffffff8119d228>] kstrdup_const+0x28/0x30
        [<ffffffff813d2333>] kvasprintf_const+0x63/0xa0
        [<ffffffff813c59fc>] kobject_set_name_vargs+0x3c/0xa0
        [<ffffffff813c5a85>] kobject_add_varg+0x25/0x60
        [<ffffffff813c5b13>] kobject_init_and_add+0x53/0x70
        [<ffffffffa07ced19>] f2fs_fill_super+0x9d9/0xc40 [f2fs]
        [<ffffffff811ff0b2>] mount_bdev+0x192/0x1d0
        [<ffffffffa07cd3e5>] f2fs_mount+0x15/0x20 [f2fs]
        [<ffffffff811fec93>] mount_fs+0x43/0x170
        [<ffffffff81220256>] vfs_kern_mount+0x76/0x160
        [<ffffffff812211c8>] do_mount+0x258/0xdc0
        [<ffffffff81221dab>] SyS_mount+0x7b/0xc0
        [<ffffffff817aecd7>] entry_SYSCALL_64_fastpath+0x12/0x6f
    ...
    Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
    Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
    29ba108d
super.c 37.5 KB