Patch "ext4: add missing brelse() in add_new_gdb_meta_bg()" has been added to the 5.0-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ext4: add missing brelse() in add_new_gdb_meta_bg()

to the 5.0-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ext4-add-missing-brelse-in-add_new_gdb_meta_bg.patch
and it can be found in the queue-5.0 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 92e93f5db96ed148751f131928c09c8dbca0ede1
Author: Lukas Czerner <lczerner@xxxxxxxxxx>
Date:   Fri Mar 15 00:15:32 2019 -0400

    ext4: add missing brelse() in add_new_gdb_meta_bg()
    
    [ Upstream commit d64264d6218e6892edd832dc3a5a5857c2856c53 ]
    
    Currently in add_new_gdb_meta_bg() there is a missing brelse of gdb_bh
    in case ext4_journal_get_write_access() fails.
    Additionally kvfree() is missing in the same error path. Fix it by
    moving the ext4_journal_get_write_access() before the ext4 sb update as
    Ted suggested and release n_group_desc and gdb_bh in case it fails.
    
    Fixes: 61a9c11e5e7a ("ext4: add missing brelse() add_new_gdb_meta_bg()'s error path")
    Signed-off-by: Lukas Czerner <lczerner@xxxxxxxxxx>
    Signed-off-by: Theodore Ts'o <tytso@xxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index 3d9b18505c0c..90061c3d048b 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -932,11 +932,18 @@ static int add_new_gdb_meta_bg(struct super_block *sb,
 	memcpy(n_group_desc, o_group_desc,
 	       EXT4_SB(sb)->s_gdb_count * sizeof(struct buffer_head *));
 	n_group_desc[gdb_num] = gdb_bh;
+
+	BUFFER_TRACE(gdb_bh, "get_write_access");
+	err = ext4_journal_get_write_access(handle, gdb_bh);
+	if (err) {
+		kvfree(n_group_desc);
+		brelse(gdb_bh);
+		return err;
+	}
+
 	EXT4_SB(sb)->s_group_desc = n_group_desc;
 	EXT4_SB(sb)->s_gdb_count++;
 	kvfree(o_group_desc);
-	BUFFER_TRACE(gdb_bh, "get_write_access");
-	err = ext4_journal_get_write_access(handle, gdb_bh);
 	return err;
 }
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux