]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/3.1.1/ext4-ext4_rename-should-dirty-dir_bh-with-the-correct-directory.patch
5.1-stable patches
[thirdparty/kernel/stable-queue.git] / releases / 3.1.1 / ext4-ext4_rename-should-dirty-dir_bh-with-the-correct-directory.patch
CommitLineData
f1755e8a
GKH
1From bcaa992975041e40449be8c010c26192b8c8b409 Mon Sep 17 00:00:00 2001
2From: "Darrick J. Wong" <djwong@us.ibm.com>
3Date: Wed, 31 Aug 2011 11:58:51 -0400
4Subject: ext4: ext4_rename should dirty dir_bh with the correct directory
5
6From: "Darrick J. Wong" <djwong@us.ibm.com>
7
8commit bcaa992975041e40449be8c010c26192b8c8b409 upstream.
9
10When ext4_rename performs a directory rename (move), dir_bh is a
11buffer that is modified to update the '..' link in the directory being
12moved (old_inode). However, ext4_handle_dirty_metadata is called with
13the old parent directory inode (old_dir) and dir_bh, which is
14incorrect because dir_bh does not belong to the parent inode. Fix
15this error.
16
17Signed-off-by: Darrick J. Wong <djwong@us.ibm.com>
18Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
19Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
20
21---
22 fs/ext4/namei.c | 2 +-
23 1 file changed, 1 insertion(+), 1 deletion(-)
24
25--- a/fs/ext4/namei.c
26+++ b/fs/ext4/namei.c
27@@ -2530,7 +2530,7 @@ static int ext4_rename(struct inode *old
28 PARENT_INO(dir_bh->b_data, new_dir->i_sb->s_blocksize) =
29 cpu_to_le32(new_dir->i_ino);
30 BUFFER_TRACE(dir_bh, "call ext4_handle_dirty_metadata");
31- retval = ext4_handle_dirty_metadata(handle, old_dir, dir_bh);
32+ retval = ext4_handle_dirty_metadata(handle, old_inode, dir_bh);
33 if (retval) {
34 ext4_std_error(old_dir->i_sb, retval);
35 goto end_rename;