ubifs: Fix memory leak bug in alloc_ubifs_info() error path
authorWenwen Wang <wenwen@cs.uga.edu>
Tue, 20 Aug 2019 04:44:24 +0000 (23:44 -0500)
committerRichard Weinberger <richard@nod.at>
Sun, 15 Sep 2019 20:12:20 +0000 (22:12 +0200)
In ubifs_mount(), 'c' is allocated through kzalloc() in alloc_ubifs_info().
However, it is not deallocated in the following execution if
ubifs_fill_super() fails, leading to a memory leak bug. To fix this issue,
free 'c' before going to the 'out_deact' label.

Fixes: 1e51764a3c2a ("UBIFS: add new flash file system")
Signed-off-by: Wenwen Wang <wenwen@cs.uga.edu>
Signed-off-by: Richard Weinberger <richard@nod.at>
fs/ubifs/super.c

index 8c1d571..fe9231f 100644 (file)
@@ -2256,8 +2256,10 @@ static struct dentry *ubifs_mount(struct file_system_type *fs_type, int flags,
                }
        } else {
                err = ubifs_fill_super(sb, data, flags & SB_SILENT ? 1 : 0);
-               if (err)
+               if (err) {
+                       kfree(c);
                        goto out_deact;
+               }
                /* We do not support atime */
                sb->s_flags |= SB_ACTIVE;
                if (IS_ENABLED(CONFIG_UBIFS_ATIME_SUPPORT))