lkml.org 
[lkml]   [2020]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 164/252] xfs: return corresponding errcode if xfs_initialize_perag() fail
    Date
    From: Yu Kuai <yukuai3@huawei.com>

    [ Upstream commit 595189c25c28a55523354336bf24453242c81c15 ]

    In xfs_initialize_perag(), if kmem_zalloc(), xfs_buf_hash_init(), or
    radix_tree_preload() failed, the returned value 'error' is not set
    accordingly.

    Reported-as-fixing: 8b26c5825e02 ("xfs: handle ENOMEM correctly during initialisation of perag structures")
    Fixes: 9b2471797942 ("xfs: cache unlinked pointers in an rhashtable")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Yu Kuai <yukuai3@huawei.com>
    Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/xfs/xfs_mount.c | 11 ++++++++---
    1 file changed, 8 insertions(+), 3 deletions(-)

    diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
    index c8ae49a1e99c3..2a491a043ec97 100644
    --- a/fs/xfs/xfs_mount.c
    +++ b/fs/xfs/xfs_mount.c
    @@ -194,20 +194,25 @@ xfs_initialize_perag(
    }

    pag = kmem_zalloc(sizeof(*pag), KM_MAYFAIL);
    - if (!pag)
    + if (!pag) {
    + error = -ENOMEM;
    goto out_unwind_new_pags;
    + }
    pag->pag_agno = index;
    pag->pag_mount = mp;
    spin_lock_init(&pag->pag_ici_lock);
    INIT_RADIX_TREE(&pag->pag_ici_root, GFP_ATOMIC);
    - if (xfs_buf_hash_init(pag))
    +
    + error = xfs_buf_hash_init(pag);
    + if (error)
    goto out_free_pag;
    init_waitqueue_head(&pag->pagb_wait);
    spin_lock_init(&pag->pagb_lock);
    pag->pagb_count = 0;
    pag->pagb_tree = RB_ROOT;

    - if (radix_tree_preload(GFP_NOFS))
    + error = radix_tree_preload(GFP_NOFS);
    + if (error)
    goto out_hash_destroy;

    spin_lock(&mp->m_perag_lock);
    --
    2.27.0


    \
     
     \ /
      Last update: 2020-11-23 13:56    [W:4.027 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site