提交 d2979aa2 编写于 作者: A Anand Jain 提交者: David Sterba

btrfs: use proper error values on allocation failure in clone_fs_devices

Fix the fake ENOMEM return error code to the actual error in
clone_fs_devices().
Reviewed-by: NJohannes Thumshirn <jthumshirn@suse.de>
Reviewed-by: NNikolay Borisov <nborisov@suse.com>
Signed-off-by: NAnand Jain <anand.jain@oracle.com>
Reviewed-by: NDavid Sterba <dsterba@suse.com>
Signed-off-by: NDavid Sterba <dsterba@suse.com>
上级 a06dee4d
...@@ -1115,6 +1115,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig) ...@@ -1115,6 +1115,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig)
struct btrfs_fs_devices *fs_devices; struct btrfs_fs_devices *fs_devices;
struct btrfs_device *device; struct btrfs_device *device;
struct btrfs_device *orig_dev; struct btrfs_device *orig_dev;
int ret = 0;
fs_devices = alloc_fs_devices(orig->fsid, NULL); fs_devices = alloc_fs_devices(orig->fsid, NULL);
if (IS_ERR(fs_devices)) if (IS_ERR(fs_devices))
...@@ -1128,8 +1129,10 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig) ...@@ -1128,8 +1129,10 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig)
device = btrfs_alloc_device(NULL, &orig_dev->devid, device = btrfs_alloc_device(NULL, &orig_dev->devid,
orig_dev->uuid); orig_dev->uuid);
if (IS_ERR(device)) if (IS_ERR(device)) {
ret = PTR_ERR(device);
goto error; goto error;
}
/* /*
* This is ok to do without rcu read locked because we hold the * This is ok to do without rcu read locked because we hold the
...@@ -1140,6 +1143,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig) ...@@ -1140,6 +1143,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig)
GFP_KERNEL); GFP_KERNEL);
if (!name) { if (!name) {
btrfs_free_device(device); btrfs_free_device(device);
ret = -ENOMEM;
goto error; goto error;
} }
rcu_assign_pointer(device->name, name); rcu_assign_pointer(device->name, name);
...@@ -1154,7 +1158,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig) ...@@ -1154,7 +1158,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig)
error: error:
mutex_unlock(&orig->device_list_mutex); mutex_unlock(&orig->device_list_mutex);
free_fs_devices(fs_devices); free_fs_devices(fs_devices);
return ERR_PTR(-ENOMEM); return ERR_PTR(ret);
} }
/* /*
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册