]> git.itanic.dy.fi Git - linux-stable/commitdiff
Revert "udf: Protect rename against modification of moved directory"
authorJan Kara <jack@suse.cz>
Thu, 1 Jun 2023 10:58:22 +0000 (12:58 +0200)
committerChristian Brauner <brauner@kernel.org>
Fri, 2 Jun 2023 12:55:32 +0000 (14:55 +0200)
This reverts commit f950fd0529130a617b3da526da9fb6a896ce87c2. The
locking is going to be provided by vfs_rename() in the following
patches.

CC: stable@vger.kernel.org
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20230601105830.13168-2-jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/udf/namei.c

index fd20423d3ed24c9349e7e153f9afaca8f41371df..fd29a66e7241f42c0a25ec9047d09239da751c98 100644 (file)
@@ -793,11 +793,6 @@ static int udf_rename(struct mnt_idmap *idmap, struct inode *old_dir,
                        if (!empty_dir(new_inode))
                                goto out_oiter;
                }
-               /*
-                * We need to protect against old_inode getting converted from
-                * ICB to normal directory.
-                */
-               inode_lock_nested(old_inode, I_MUTEX_NONDIR2);
                retval = udf_fiiter_find_entry(old_inode, &dotdot_name,
                                               &diriter);
                if (retval == -ENOENT) {
@@ -806,10 +801,8 @@ static int udf_rename(struct mnt_idmap *idmap, struct inode *old_dir,
                                old_inode->i_ino);
                        retval = -EFSCORRUPTED;
                }
-               if (retval) {
-                       inode_unlock(old_inode);
+               if (retval)
                        goto out_oiter;
-               }
                has_diriter = true;
                tloc = lelb_to_cpu(diriter.fi.icb.extLocation);
                if (udf_get_lb_pblock(old_inode->i_sb, &tloc, 0) !=
@@ -889,7 +882,6 @@ static int udf_rename(struct mnt_idmap *idmap, struct inode *old_dir,
                               udf_dir_entry_len(&diriter.fi));
                udf_fiiter_write_fi(&diriter, NULL);
                udf_fiiter_release(&diriter);
-               inode_unlock(old_inode);
 
                inode_dec_link_count(old_dir);
                if (new_inode)
@@ -901,10 +893,8 @@ static int udf_rename(struct mnt_idmap *idmap, struct inode *old_dir,
        }
        return 0;
 out_oiter:
-       if (has_diriter) {
+       if (has_diriter)
                udf_fiiter_release(&diriter);
-               inode_unlock(old_inode);
-       }
        udf_fiiter_release(&oiter);
 
        return retval;