lkml.org 
[lkml]   [2021]   [Mar]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 149/157] ext4: fix potential error in ext4_do_update_inode
    Date
    From: Shijie Luo <luoshijie1@huawei.com>

    commit 7d8bd3c76da1d94b85e6c9b7007e20e980bfcfe6 upstream.

    If set_large_file = 1 and errors occur in ext4_handle_dirty_metadata(),
    the error code will be overridden, go to out_brelse to avoid this
    situation.

    Signed-off-by: Shijie Luo <luoshijie1@huawei.com>
    Link: https://lore.kernel.org/r/20210312065051.36314-1-luoshijie1@huawei.com
    Cc: stable@kernel.org
    Reviewed-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/ext4/inode.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    --- a/fs/ext4/inode.c
    +++ b/fs/ext4/inode.c
    @@ -5029,7 +5029,7 @@ static int ext4_do_update_inode(handle_t
    struct ext4_inode_info *ei = EXT4_I(inode);
    struct buffer_head *bh = iloc->bh;
    struct super_block *sb = inode->i_sb;
    - int err = 0, rc, block;
    + int err = 0, block;
    int need_datasync = 0, set_large_file = 0;
    uid_t i_uid;
    gid_t i_gid;
    @@ -5141,9 +5141,9 @@ static int ext4_do_update_inode(handle_t
    bh->b_data);

    BUFFER_TRACE(bh, "call ext4_handle_dirty_metadata");
    - rc = ext4_handle_dirty_metadata(handle, NULL, bh);
    - if (!err)
    - err = rc;
    + err = ext4_handle_dirty_metadata(handle, NULL, bh);
    + if (err)
    + goto out_brelse;
    ext4_clear_inode_state(inode, EXT4_STATE_NEW);
    if (set_large_file) {
    BUFFER_TRACE(EXT4_SB(sb)->s_sbh, "get write access");

    \
     
     \ /
      Last update: 2021-03-22 13:55    [W:2.159 / U:0.396 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site