xa_err errors are equivalent to "error_code * 4 + 2". We want to return error pointers here so we can't just cast them back and forth. Use xa_err() to do the conversion. Fixes: 6d50990e6be2 ("btrfs: track delayed ref heads in an xarray") Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> --- fs/btrfs/delayed-ref.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/btrfs/delayed-ref.c b/fs/btrfs/delayed-ref.c index 1f97e1e5c66c..012fce255866 100644 --- a/fs/btrfs/delayed-ref.c +++ b/fs/btrfs/delayed-ref.c @@ -848,7 +848,7 @@ add_delayed_ref_head(struct btrfs_trans_handle *trans, if (xa_is_err(existing)) { /* Memory was preallocated by the caller. */ ASSERT(xa_err(existing) != -ENOMEM); - return ERR_CAST(existing); + return ERR_PTR(xa_err(existing)); } else if (WARN_ON(existing)) { /* * Shouldn't happen we just did a lookup before under -- 2.45.2