]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blame - releases/4.14.113/ext4-add-missing-brelse-in-add_new_gdb_meta_bg.patch
Linux 4.14.113
[thirdparty/kernel/stable-queue.git] / releases / 4.14.113 / ext4-add-missing-brelse-in-add_new_gdb_meta_bg.patch
CommitLineData
39f3dcdc
SLM
1From 86dbdea2e28d356cdf917c477da5724d17427fdd Mon Sep 17 00:00:00 2001
2From: Lukas Czerner <lczerner@redhat.com>
3Date: Fri, 15 Mar 2019 00:15:32 -0400
4Subject: ext4: add missing brelse() in add_new_gdb_meta_bg()
5
6[ Upstream commit d64264d6218e6892edd832dc3a5a5857c2856c53 ]
7
8Currently in add_new_gdb_meta_bg() there is a missing brelse of gdb_bh
9in case ext4_journal_get_write_access() fails.
10Additionally kvfree() is missing in the same error path. Fix it by
11moving the ext4_journal_get_write_access() before the ext4 sb update as
12Ted suggested and release n_group_desc and gdb_bh in case it fails.
13
14Fixes: 61a9c11e5e7a ("ext4: add missing brelse() add_new_gdb_meta_bg()'s error path")
15Signed-off-by: Lukas Czerner <lczerner@redhat.com>
16Signed-off-by: Theodore Ts'o <tytso@mit.edu>
17Signed-off-by: Sasha Levin <sashal@kernel.org>
18---
19 fs/ext4/resize.c | 11 +++++++++--
20 1 file changed, 9 insertions(+), 2 deletions(-)
21
22diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
23index 6f0acfe31418..fb9fbf993e22 100644
24--- a/fs/ext4/resize.c
25+++ b/fs/ext4/resize.c
26@@ -907,11 +907,18 @@ static int add_new_gdb_meta_bg(struct super_block *sb,
27 memcpy(n_group_desc, o_group_desc,
28 EXT4_SB(sb)->s_gdb_count * sizeof(struct buffer_head *));
29 n_group_desc[gdb_num] = gdb_bh;
30+
31+ BUFFER_TRACE(gdb_bh, "get_write_access");
32+ err = ext4_journal_get_write_access(handle, gdb_bh);
33+ if (err) {
34+ kvfree(n_group_desc);
35+ brelse(gdb_bh);
36+ return err;
37+ }
38+
39 EXT4_SB(sb)->s_group_desc = n_group_desc;
40 EXT4_SB(sb)->s_gdb_count++;
41 kvfree(o_group_desc);
42- BUFFER_TRACE(gdb_bh, "get_write_access");
43- err = ext4_journal_get_write_access(handle, gdb_bh);
44 return err;
45 }
46
47--
482.19.1
49