mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-07 18:40:10 +00:00
ext4: add missing brelse() in add_new_gdb_meta_bg()
[ Upstream commitd64264d621] 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:61a9c11e5e("ext4: add missing brelse() add_new_gdb_meta_bg()'s error path") Signed-off-by: Lukas Czerner <lczerner@redhat.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
e239811047
commit
d45fc2ba0e
@@ -932,11 +932,18 @@ static int add_new_gdb_meta_bg(struct super_block *sb,
|
|||||||
memcpy(n_group_desc, o_group_desc,
|
memcpy(n_group_desc, o_group_desc,
|
||||||
EXT4_SB(sb)->s_gdb_count * sizeof(struct buffer_head *));
|
EXT4_SB(sb)->s_gdb_count * sizeof(struct buffer_head *));
|
||||||
n_group_desc[gdb_num] = gdb_bh;
|
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_group_desc = n_group_desc;
|
||||||
EXT4_SB(sb)->s_gdb_count++;
|
EXT4_SB(sb)->s_gdb_count++;
|
||||||
kvfree(o_group_desc);
|
kvfree(o_group_desc);
|
||||||
BUFFER_TRACE(gdb_bh, "get_write_access");
|
|
||||||
err = ext4_journal_get_write_access(handle, gdb_bh);
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user