]> git.itanic.dy.fi Git - linux-stable/commitdiff
ext4: Remove ext4 locking of moved directory
authorJan Kara <jack@suse.cz>
Thu, 1 Jun 2023 10:58:21 +0000 (12:58 +0200)
committerChristian Brauner <brauner@kernel.org>
Fri, 2 Jun 2023 12:55:32 +0000 (14:55 +0200)
Remove locking of moved directory in ext4_rename2(). We will take care
of it in VFS instead. This effectively reverts commit 0813299c586b
("ext4: Fix possible corruption when moving a directory") and followup
fixes.

CC: Ted Tso <tytso@mit.edu>
CC: stable@vger.kernel.org
Signed-off-by: Jan Kara <jack@suse.cz>
Message-Id: <20230601105830.13168-1-jack@suse.cz>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/ext4/namei.c

index 45b579805c95428238b792de8182bc2e7e52a18c..0caf6c730ce34b38a6d4eb7a0a176d4ce93bd2ca 100644 (file)
@@ -3834,19 +3834,10 @@ static int ext4_rename(struct mnt_idmap *idmap, struct inode *old_dir,
                        return retval;
        }
 
-       /*
-        * We need to protect against old.inode directory getting converted
-        * from inline directory format into a normal one.
-        */
-       if (S_ISDIR(old.inode->i_mode))
-               inode_lock_nested(old.inode, I_MUTEX_NONDIR2);
-
        old.bh = ext4_find_entry(old.dir, &old.dentry->d_name, &old.de,
                                 &old.inlined);
-       if (IS_ERR(old.bh)) {
-               retval = PTR_ERR(old.bh);
-               goto unlock_moved_dir;
-       }
+       if (IS_ERR(old.bh))
+               return PTR_ERR(old.bh);
 
        /*
         *  Check for inode number is _not_ due to possible IO errors.
@@ -4043,10 +4034,6 @@ static int ext4_rename(struct mnt_idmap *idmap, struct inode *old_dir,
        brelse(old.bh);
        brelse(new.bh);
 
-unlock_moved_dir:
-       if (S_ISDIR(old.inode->i_mode))
-               inode_unlock(old.inode);
-
        return retval;
 }