lkml.org 
[lkml]   [2019]   [Aug]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 009/157] ext4: add missing brelse() in add_new_gdb_meta_bg()
    3.16.72-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Lukas Czerner <lczerner@redhat.com>

    commit d64264d6218e6892edd832dc3a5a5857c2856c53 upstream.

    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@redhat.com>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    [bwh: Backported to 3.16: adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    fs/ext4/resize.c | 11 +++++++++--
    1 file changed, 9 insertions(+), 2 deletions(-)

    --- a/fs/ext4/resize.c
    +++ b/fs/ext4/resize.c
    @@ -908,11 +908,18 @@ static int add_new_gdb_meta_bg(struct su
    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++;
    ext4_kvfree(o_group_desc);
    - BUFFER_TRACE(gdb_bh, "get_write_access");
    - err = ext4_journal_get_write_access(handle, gdb_bh);
    return err;
    }

    \
     
     \ /
      Last update: 2019-08-10 22:54    [W:4.817 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site