mirror of
https://github.com/torvalds/linux.git
synced 2026-03-09 18:16:36 +01:00
xfs: only call xf{array,blob}_destroy if we have a valid pointer
Only call the xfarray and xfblob destructor if we have a valid pointer,
and be sure to null out that pointer afterwards. Note that this patch
fixes a large number of commits, most of which were merged between 6.9
and 6.10.
Cc: r772577952@gmail.com
Cc: <stable@vger.kernel.org> # v6.12
Fixes: ab97f4b1c0 ("xfs: repair AGI unlinked inode bucket lists")
Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Tested-by: Jiaming Zhang <r772577952@gmail.com>
This commit is contained in:
parent
60382993a2
commit
ba408d299a
5 changed files with 24 additions and 9 deletions
|
|
@ -837,8 +837,12 @@ xrep_agi_buf_cleanup(
|
|||
{
|
||||
struct xrep_agi *ragi = buf;
|
||||
|
||||
xfarray_destroy(ragi->iunlink_prev);
|
||||
xfarray_destroy(ragi->iunlink_next);
|
||||
if (ragi->iunlink_prev)
|
||||
xfarray_destroy(ragi->iunlink_prev);
|
||||
ragi->iunlink_prev = NULL;
|
||||
if (ragi->iunlink_next)
|
||||
xfarray_destroy(ragi->iunlink_next);
|
||||
ragi->iunlink_next = NULL;
|
||||
xagino_bitmap_destroy(&ragi->iunlink_bmp);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1516,8 +1516,10 @@ xrep_xattr_teardown(
|
|||
xfblob_destroy(rx->pptr_names);
|
||||
if (rx->pptr_recs)
|
||||
xfarray_destroy(rx->pptr_recs);
|
||||
xfblob_destroy(rx->xattr_blobs);
|
||||
xfarray_destroy(rx->xattr_records);
|
||||
if (rx->xattr_blobs)
|
||||
xfblob_destroy(rx->xattr_blobs);
|
||||
if (rx->xattr_records)
|
||||
xfarray_destroy(rx->xattr_records);
|
||||
mutex_destroy(&rx->lock);
|
||||
kfree(rx);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -172,8 +172,12 @@ xrep_dir_teardown(
|
|||
struct xrep_dir *rd = sc->buf;
|
||||
|
||||
xrep_findparent_scan_teardown(&rd->pscan);
|
||||
xfblob_destroy(rd->dir_names);
|
||||
xfarray_destroy(rd->dir_entries);
|
||||
if (rd->dir_names)
|
||||
xfblob_destroy(rd->dir_names);
|
||||
rd->dir_names = NULL;
|
||||
if (rd->dir_entries)
|
||||
xfarray_destroy(rd->dir_entries);
|
||||
rd->dir_names = NULL;
|
||||
}
|
||||
|
||||
/* Set up for a directory repair. */
|
||||
|
|
|
|||
|
|
@ -81,8 +81,12 @@ xchk_dirtree_buf_cleanup(
|
|||
kfree(path);
|
||||
}
|
||||
|
||||
xfblob_destroy(dl->path_names);
|
||||
xfarray_destroy(dl->path_steps);
|
||||
if (dl->path_names)
|
||||
xfblob_destroy(dl->path_names);
|
||||
dl->path_names = NULL;
|
||||
if (dl->path_steps)
|
||||
xfarray_destroy(dl->path_steps);
|
||||
dl->path_steps = NULL;
|
||||
mutex_destroy(&dl->lock);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -971,7 +971,8 @@ xchk_nlinks_teardown_scan(
|
|||
|
||||
xfs_dir_hook_del(xnc->sc->mp, &xnc->dhook);
|
||||
|
||||
xfarray_destroy(xnc->nlinks);
|
||||
if (xnc->nlinks)
|
||||
xfarray_destroy(xnc->nlinks);
|
||||
xnc->nlinks = NULL;
|
||||
|
||||
xchk_iscan_teardown(&xnc->collect_iscan);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue