lkml.org 
[lkml]   [2022]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 6.0 131/862] jbd2: fix potential buffer head reference count leak
    Date
    From: Ye Bin <yebin10@huawei.com>

    commit e0d5fc7a6d80ac2406c7dfc6bb625201d0250a8a upstream.

    As in 'jbd2_fc_wait_bufs' if buffer isn't uptodate, will return -EIO without
    update 'journal->j_fc_off'. But 'jbd2_fc_release_bufs' will release buffer head
    from ‘j_fc_off - 1’ if 'bh' is NULL will terminal release which will lead to
    buffer head buffer head reference count leak.
    To solve above issue, update 'journal->j_fc_off' before return -EIO.

    Cc: stable@kernel.org
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Reviewed-by: Jan Kara <jack@suse.cz>
    Link: https://lore.kernel.org/r/20220914100812.1414768-2-yebin10@huawei.com
    Signed-off-by: Theodore Ts'o <tytso@mit.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    fs/jbd2/journal.c | 8 +++++++-
    1 file changed, 7 insertions(+), 1 deletion(-)

    --- a/fs/jbd2/journal.c
    +++ b/fs/jbd2/journal.c
    @@ -925,8 +925,14 @@ int jbd2_fc_wait_bufs(journal_t *journal
    wait_on_buffer(bh);
    put_bh(bh);
    journal->j_fc_wbuf[i] = NULL;
    - if (unlikely(!buffer_uptodate(bh)))
    + /*
    + * Update j_fc_off so jbd2_fc_release_bufs can release remain
    + * buffer head.
    + */
    + if (unlikely(!buffer_uptodate(bh))) {
    + journal->j_fc_off = i;
    return -EIO;
    + }
    }

    return 0;

    \
     
     \ /
      Last update: 2022-10-19 10:47    [W:4.335 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site