• Baokun Li's avatar
    jffs2: fix memory leak in jffs2_do_mount_fs · d051cef7
    Baokun Li authored
    If jffs2_build_filesystem() in jffs2_do_mount_fs() returns an error,
    we can observe the following kmemleak report:
    
    --------------------------------------------
    unreferenced object 0xffff88811b25a640 (size 64):
      comm "mount", pid 691, jiffies 4294957728 (age 71.952s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
      backtrace:
        [<ffffffffa493be24>] kmem_cache_alloc_trace+0x584/0x880
        [<ffffffffa5423a06>] jffs2_sum_init+0x86/0x130
        [<ffffffffa5400e58>] jffs2_do_mount_fs+0x798/0xac0
        [<ffffffffa540acf3>] jffs2_do_fill_super+0x383/0xc30
        [<ffffffffa540c00a>] jffs2_fill_super+0x2ea/0x4c0
        [...]
    unreferenced object 0xffff88812c760000 (size 65536):
      comm "mount", pid 691, jiffies 4294957728 (age 71.952s)
      hex dump (first 32 bytes):
        bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
        bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb  ................
      backtrace:
        [<ffffffffa493a449>] __kmalloc+0x6b9/0x910
        [<ffffffffa5423a57>] jffs2_sum_init+0xd7/0x130
        [<ffffffffa5400e58>] jffs2_do_mount_fs+0x798/0xac0
        [<ffffffffa540acf3>] jffs2_do_fill_super+0x383/0xc30
        [<ffffffffa540c00a>] jffs2_fill_super+0x2ea/0x4c0
        [...]
    --------------------------------------------
    
    This is because the resources allocated in jffs2_sum_init() are not
    released. Call jffs2_sum_exit() to release these resources to solve
    the problem.
    
    Fixes: e631ddba ("[JFFS2] Add erase block summary support (mount time improvement)")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarBaokun Li <libaokun1@huawei.com>
    Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
    d051cef7
build.c 12.6 KB