|
@@ -583,6 +583,7 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig)
|
|
|
if (IS_ERR(fs_devices))
|
|
|
return fs_devices;
|
|
|
|
|
|
+ mutex_lock(&orig->device_list_mutex);
|
|
|
fs_devices->total_devices = orig->total_devices;
|
|
|
|
|
|
/* We have held the volume lock, it is safe to get the devices. */
|
|
@@ -611,8 +612,10 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig)
|
|
|
device->fs_devices = fs_devices;
|
|
|
fs_devices->num_devices++;
|
|
|
}
|
|
|
+ mutex_unlock(&orig->device_list_mutex);
|
|
|
return fs_devices;
|
|
|
error:
|
|
|
+ mutex_unlock(&orig->device_list_mutex);
|
|
|
free_fs_devices(fs_devices);
|
|
|
return ERR_PTR(-ENOMEM);
|
|
|
}
|