lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.17 52/60] fs/ntfs3: Fix invalid free in log_replay
    Date
    From: Namjae Jeon <linkinjeon@kernel.org>

    [ Upstream commit f26967b9f7a830e228bb13fb41bd516ddd9d789d ]

    log_read_rst() returns ENOMEM error when there is not enough memory.
    In this case, if info is returned without initialization,
    it attempts to kfree the uninitialized info->r_page pointer. This patch
    moves the memset initialization code to before log_read_rst() is called.

    Reported-by: Gerald Lee <sundaywind2004@gmail.com>
    Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
    Signed-off-by: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/ntfs3/fslog.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/fs/ntfs3/fslog.c b/fs/ntfs3/fslog.c
    index 06492f088d60..fc36c53b865a 100644
    --- a/fs/ntfs3/fslog.c
    +++ b/fs/ntfs3/fslog.c
    @@ -1185,8 +1185,6 @@ static int log_read_rst(struct ntfs_log *log, u32 l_size, bool first,
    if (!r_page)
    return -ENOMEM;

    - memset(info, 0, sizeof(struct restart_info));
    -
    /* Determine which restart area we are looking for. */
    if (first) {
    vbo = 0;
    @@ -3791,10 +3789,11 @@ int log_replay(struct ntfs_inode *ni, bool *initialized)
    if (!log)
    return -ENOMEM;

    + memset(&rst_info, 0, sizeof(struct restart_info));
    +
    log->ni = ni;
    log->l_size = l_size;
    log->one_page_buf = kmalloc(page_size, GFP_NOFS);
    -
    if (!log->one_page_buf) {
    err = -ENOMEM;
    goto out;
    @@ -3842,6 +3841,7 @@ int log_replay(struct ntfs_inode *ni, bool *initialized)
    if (rst_info.vbo)
    goto check_restart_area;

    + memset(&rst_info2, 0, sizeof(struct restart_info));
    err = log_read_rst(log, l_size, false, &rst_info2);

    /* Determine which restart area to use. */
    --
    2.35.1
    \
     
     \ /
      Last update: 2022-06-07 21:19    [W:2.114 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site