From: Carlos Maiolino <cmaiolino@xxxxxxxxxx> Add proper exit error paths to avoid checking all pointers at the current path Fixes-coverity-id: 1512651 Signed-off-by: Carlos Maiolino <cmaiolino@xxxxxxxxxx> --- repair/rmap.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/repair/rmap.c b/repair/rmap.c index a7c4b25b1..0253c0c36 100644 --- a/repair/rmap.c +++ b/repair/rmap.c @@ -1377,7 +1377,7 @@ check_refcounts( if (error) { do_warn(_("Could not read AGF %u to check refcount btree.\n"), agno); - goto err; + goto err_agf; } /* Leave the per-ag data "uninitialized" since we rewrite it later */ @@ -1386,7 +1386,7 @@ check_refcounts( bt_cur = libxfs_refcountbt_init_cursor(mp, NULL, agbp, pag); if (!bt_cur) { do_warn(_("Not enough memory to check refcount data.\n")); - goto err; + goto err_bt_cur; } rl_rec = pop_slab_cursor(rl_cur); @@ -1398,7 +1398,7 @@ check_refcounts( do_warn( _("Could not read reference count record for (%u/%u).\n"), agno, rl_rec->rc_startblock); - goto err; + goto err_loop; } if (!have) { do_warn( @@ -1413,7 +1413,7 @@ _("Missing reference count record for (%u/%u) len %u count %u\n"), do_warn( _("Could not read reference count record for (%u/%u).\n"), agno, rl_rec->rc_startblock); - goto err; + goto err_loop; } if (!i) { do_warn( @@ -1436,14 +1436,13 @@ next_loop: rl_rec = pop_slab_cursor(rl_cur); } -err: - if (bt_cur) - libxfs_btree_del_cursor(bt_cur, error ? XFS_BTREE_ERROR : - XFS_BTREE_NOERROR); - if (pag) - libxfs_perag_put(pag); - if (agbp) - libxfs_buf_relse(agbp); +err_loop: + libxfs_btree_del_cursor(bt_cur, error ? + XFS_BTREE_ERROR : XFS_BTREE_NOERROR); +err_bt_cur: + libxfs_buf_relse(agbp); +err_agf: + libxfs_perag_put(pag); free_slab_cursor(&rl_cur); }