From: Wentao Liang <vulab@xxxxxxxxxxx> commit 26b63bee2f6e711c5a169997fd126fddcfb90848 upstream. In xfs_inactive(), xfs_reflink_cancel_cow_range() is called without error handling, risking unnoticed failures and inconsistent behavior compared to other parts of the code. Fix this issue by adding an error handling for the xfs_reflink_cancel_cow_range(), improving code robustness. Fixes: 6231848c3aa5 ("xfs: check for cow blocks before trying to clear them") Cc: stable@xxxxxxxxxxxxxxx # v4.17 Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx> Signed-off-by: Carlos Maiolino <cem@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- fs/xfs/xfs_inode.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --- a/fs/xfs/xfs_inode.c +++ b/fs/xfs/xfs_inode.c @@ -1748,8 +1748,11 @@ xfs_inactive( goto out; /* Try to clean out the cow blocks if there are any. */ - if (xfs_inode_has_cow_data(ip)) - xfs_reflink_cancel_cow_range(ip, 0, NULLFILEOFF, true); + if (xfs_inode_has_cow_data(ip)) { + error = xfs_reflink_cancel_cow_range(ip, 0, NULLFILEOFF, true); + if (error) + goto out; + } if (VFS_I(ip)->i_nlink != 0) { /* Patches currently in stable-queue which might be from vulab@xxxxxxxxxxx are queue-5.15/pm-hibernate-add-error-handling-for-syscore_suspend.patch queue-5.15/xfs-add-error-handling-for-xfs_reflink_cancel_cow_range.patch