]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ext4: don't dereference null pointer when make_indexed_dir() fails
authorAllison Henderson <achender@linux.vnet.ibm.com>
Sun, 15 May 2011 04:19:41 +0000 (00:19 -0400)
committerPaul Gortmaker <paul.gortmaker@windriver.com>
Mon, 10 Feb 2014 21:11:28 +0000 (16:11 -0500)
commit 6976a6f2acde2b0443cd64f1d08af90630e4ce81 upstream.

Fix for a null pointer bug found while running punch hole tests

Signed-off-by: Allison Henderson <achender@us.ibm.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
fs/ext4/namei.c

index caa3c77f174376d3b4df8d3f32b920c42f790661..41198b355a26109db86c9dba0eb80ed2c2f25182 100644 (file)
@@ -1451,6 +1451,10 @@ static int make_indexed_dir(handle_t *handle, struct dentry *dentry,
        frame->at = entries;
        frame->bh = bh;
        bh = bh2;
+
+       ext4_handle_dirty_metadata(handle, dir, frame->bh);
+       ext4_handle_dirty_metadata(handle, dir, bh);
+
        de = do_split(handle,dir, &bh, frame, &hinfo, &retval);
        if (!de) {
                /*
@@ -1459,8 +1463,6 @@ static int make_indexed_dir(handle_t *handle, struct dentry *dentry,
                 * with corrupted filesystem.
                 */
                ext4_mark_inode_dirty(handle, dir);
-               ext4_handle_dirty_metadata(handle, dir, frame->bh);
-               ext4_handle_dirty_metadata(handle, dir, bh);
                dx_release(frames);
                return retval;
        }