]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
f2fs: switch to fscrypt_prepare_rename()
authorEric Biggers <ebiggers@google.com>
Wed, 29 Nov 2017 20:35:30 +0000 (12:35 -0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 3 Jan 2018 03:27:28 +0000 (19:27 -0800)
Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/namei.c

index dcf5c3a9705995aaba1a81e8e71ab59a65c18b0f..e910d2ebe0c67484f1b8270452dcdea00dd61de6 100644 (file)
@@ -800,18 +800,6 @@ static int f2fs_rename(struct inode *old_dir, struct dentry *old_dentry,
        if (unlikely(f2fs_cp_error(sbi)))
                return -EIO;
 
-       if ((f2fs_encrypted_inode(old_dir) &&
-                       !fscrypt_has_encryption_key(old_dir)) ||
-                       (f2fs_encrypted_inode(new_dir) &&
-                       !fscrypt_has_encryption_key(new_dir)))
-               return -ENOKEY;
-
-       if ((old_dir != new_dir) && f2fs_encrypted_inode(new_dir) &&
-                       !fscrypt_has_permitted_context(new_dir, old_inode)) {
-               err = -EPERM;
-               goto out;
-       }
-
        if (is_inode_flag_set(new_dir, FI_PROJ_INHERIT) &&
                        (!projid_eq(F2FS_I(new_dir)->i_projid,
                        F2FS_I(old_dentry->d_inode)->i_projid)))
@@ -1002,18 +990,6 @@ static int f2fs_cross_rename(struct inode *old_dir, struct dentry *old_dentry,
        if (unlikely(f2fs_cp_error(sbi)))
                return -EIO;
 
-       if ((f2fs_encrypted_inode(old_dir) &&
-                       !fscrypt_has_encryption_key(old_dir)) ||
-                       (f2fs_encrypted_inode(new_dir) &&
-                       !fscrypt_has_encryption_key(new_dir)))
-               return -ENOKEY;
-
-       if ((f2fs_encrypted_inode(old_dir) || f2fs_encrypted_inode(new_dir)) &&
-                       (old_dir != new_dir) &&
-                       (!fscrypt_has_permitted_context(new_dir, old_inode) ||
-                        !fscrypt_has_permitted_context(old_dir, new_inode)))
-               return -EPERM;
-
        if ((is_inode_flag_set(new_dir, FI_PROJ_INHERIT) &&
                        !projid_eq(F2FS_I(new_dir)->i_projid,
                        F2FS_I(old_dentry->d_inode)->i_projid)) ||
@@ -1153,9 +1129,16 @@ static int f2fs_rename2(struct inode *old_dir, struct dentry *old_dentry,
                        struct inode *new_dir, struct dentry *new_dentry,
                        unsigned int flags)
 {
+       int err;
+
        if (flags & ~(RENAME_NOREPLACE | RENAME_EXCHANGE | RENAME_WHITEOUT))
                return -EINVAL;
 
+       err = fscrypt_prepare_rename(old_dir, old_dentry, new_dir, new_dentry,
+                                    flags);
+       if (err)
+               return err;
+
        if (flags & RENAME_EXCHANGE) {
                return f2fs_cross_rename(old_dir, old_dentry,
                                         new_dir, new_dentry);