Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a21272b authored by Darrick J. Wong's avatar Darrick J. Wong
Browse files

xfs: fix double-cleanup when CUI recovery fails



Dan Carpenter reported a double-free of rcur if _defer_finish fails
while we're recovering CUI items.  Fix the error recovery to prevent
this.

Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 0c744ea4
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -526,13 +526,14 @@ xfs_cui_recover(
	xfs_refcount_finish_one_cleanup(tp, rcur, error);
	error = xfs_defer_finish(&tp, &dfops, NULL);
	if (error)
		goto abort_error;
		goto abort_defer;
	set_bit(XFS_CUI_RECOVERED, &cuip->cui_flags);
	error = xfs_trans_commit(tp);
	return error;

abort_error:
	xfs_refcount_finish_one_cleanup(tp, rcur, error);
abort_defer:
	xfs_defer_cancel(&dfops);
	xfs_trans_cancel(tp);
	return error;