|
@@ -111,6 +111,8 @@ static int do_setxattr(struct btrfs_trans_handle *trans,
|
|
|
name, name_len, -1);
|
|
|
if (!di && (flags & XATTR_REPLACE))
|
|
|
ret = -ENODATA;
|
|
|
+ else if (IS_ERR(di))
|
|
|
+ ret = PTR_ERR(di);
|
|
|
else if (di)
|
|
|
ret = btrfs_delete_one_dir_name(trans, root, path, di);
|
|
|
goto out;
|
|
@@ -127,10 +129,12 @@ static int do_setxattr(struct btrfs_trans_handle *trans,
|
|
|
ASSERT(mutex_is_locked(&inode->i_mutex));
|
|
|
di = btrfs_lookup_xattr(NULL, root, path, btrfs_ino(inode),
|
|
|
name, name_len, 0);
|
|
|
- if (!di) {
|
|
|
+ if (!di)
|
|
|
ret = -ENODATA;
|
|
|
+ else if (IS_ERR(di))
|
|
|
+ ret = PTR_ERR(di);
|
|
|
+ if (ret)
|
|
|
goto out;
|
|
|
- }
|
|
|
btrfs_release_path(path);
|
|
|
di = NULL;
|
|
|
}
|