Message ID | 34d94824-834c-fb72-2f93-01e9036e9b38@virtuozzo.com |
---|---|
State | Accepted, archived |
Headers | show |
Series | ext4: number of long lived errors | expand |
On Wed, Oct 31, 2018 at 12:57:55AM +0300, Vasily Averin wrote: > gdb_bh must be released in case of errors before update of s_group_desc > but it must not be released after update of group descriptors > because in this case bh can be used later. > > Fixes 01f795f9e0d6 ("ext4: add online resizing support for meta_bg ...") # 3.7 > > Signed-off-by: Vasily Averin <vvs@virtuozzo.com> Thanks, applied. The commit description is not accurate (I suspect it was obsoleted when your patch for RHEL was forward ported) do I dropped it. I adjusted the patch summary to be: ext4: add missing brelse() add_new_gdb_meta_bg()'s error path The commments for the Fixes and Cc: stable@kernel.org also apply. - Ted
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c index 0a4dc6217e78..7131f35b62d9 100644 --- a/fs/ext4/resize.c +++ b/fs/ext4/resize.c @@ -922,6 +922,7 @@ static int add_new_gdb_meta_bg(struct super_block *sb, sizeof(struct buffer_head *), GFP_NOFS); if (!n_group_desc) { + brelse(gdb_bh); err = -ENOMEM; ext4_warning(sb, "not enough memory for %lu groups", gdb_num + 1); @@ -937,8 +938,6 @@ static int add_new_gdb_meta_bg(struct super_block *sb, kvfree(o_group_desc); BUFFER_TRACE(gdb_bh, "get_write_access"); err = ext4_journal_get_write_access(handle, gdb_bh); - if (unlikely(err)) - brelse(gdb_bh); return err; }
gdb_bh must be released in case of errors before update of s_group_desc but it must not be released after update of group descriptors because in this case bh can be used later. Fixes 01f795f9e0d6 ("ext4: add online resizing support for meta_bg ...") # 3.7 Signed-off-by: Vasily Averin <vvs@virtuozzo.com> --- fs/ext4/resize.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)