f2fs: don't leak filename in f2fs_try_convert_inline_dir()
authorEric Biggers <ebiggers@google.com>
Thu, 7 May 2020 07:59:02 +0000 (00:59 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 12 May 2020 03:36:46 +0000 (20:36 -0700)
We need to call fscrypt_free_filename() to free the memory allocated by
fscrypt_setup_filename().

Fixes: b06af2aff28b ("f2fs: convert inline_dir early before starting rename")
Cc: <stable@vger.kernel.org> # v5.6+
Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/inline.c

index 4167e540815185a2a467e7e3d00a598dd9adbf7a..59a4b7ff11e17a60ed179e5eec49310b6630a992 100644 (file)
@@ -559,12 +559,12 @@ int f2fs_try_convert_inline_dir(struct inode *dir, struct dentry *dentry)
        ipage = f2fs_get_node_page(sbi, dir->i_ino);
        if (IS_ERR(ipage)) {
                err = PTR_ERR(ipage);
-               goto out;
+               goto out_fname;
        }
 
        if (f2fs_has_enough_room(dir, ipage, &fname)) {
                f2fs_put_page(ipage, 1);
-               goto out;
+               goto out_fname;
        }
 
        inline_dentry = inline_data_addr(dir, ipage);
@@ -572,6 +572,8 @@ int f2fs_try_convert_inline_dir(struct inode *dir, struct dentry *dentry)
        err = do_convert_inline_dir(dir, ipage, inline_dentry);
        if (!err)
                f2fs_put_page(ipage, 1);
+out_fname:
+       fscrypt_free_filename(&fname);
 out:
        f2fs_unlock_op(sbi);
        return err;