diff options
Diffstat (limited to 'fs/btrfs/xattr.c')
| -rw-r--r-- | fs/btrfs/xattr.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c index 47b19465f0dc..883b93623bc5 100644 --- a/fs/btrfs/xattr.c +++ b/fs/btrfs/xattr.c | |||
| @@ -111,6 +111,8 @@ static int do_setxattr(struct btrfs_trans_handle *trans, | |||
| 111 | name, name_len, -1); | 111 | name, name_len, -1); |
| 112 | if (!di && (flags & XATTR_REPLACE)) | 112 | if (!di && (flags & XATTR_REPLACE)) |
| 113 | ret = -ENODATA; | 113 | ret = -ENODATA; |
| 114 | else if (IS_ERR(di)) | ||
| 115 | ret = PTR_ERR(di); | ||
| 114 | else if (di) | 116 | else if (di) |
| 115 | ret = btrfs_delete_one_dir_name(trans, root, path, di); | 117 | ret = btrfs_delete_one_dir_name(trans, root, path, di); |
| 116 | goto out; | 118 | goto out; |
| @@ -127,10 +129,12 @@ static int do_setxattr(struct btrfs_trans_handle *trans, | |||
| 127 | ASSERT(mutex_is_locked(&inode->i_mutex)); | 129 | ASSERT(mutex_is_locked(&inode->i_mutex)); |
| 128 | di = btrfs_lookup_xattr(NULL, root, path, btrfs_ino(inode), | 130 | di = btrfs_lookup_xattr(NULL, root, path, btrfs_ino(inode), |
| 129 | name, name_len, 0); | 131 | name, name_len, 0); |
| 130 | if (!di) { | 132 | if (!di) |
| 131 | ret = -ENODATA; | 133 | ret = -ENODATA; |
| 134 | else if (IS_ERR(di)) | ||
| 135 | ret = PTR_ERR(di); | ||
| 136 | if (ret) | ||
| 132 | goto out; | 137 | goto out; |
| 133 | } | ||
| 134 | btrfs_release_path(path); | 138 | btrfs_release_path(path); |
| 135 | di = NULL; | 139 | di = NULL; |
| 136 | } | 140 | } |
