|
@@ -555,12 +555,14 @@ static struct btrfs_fs_devices *clone_fs_devices(struct btrfs_fs_devices *orig)
|
|
|
* This is ok to do without rcu read locked because we hold the
|
|
|
* uuid mutex so nothing we touch in here is going to disappear.
|
|
|
*/
|
|
|
- name = rcu_string_strdup(orig_dev->name->str, GFP_NOFS);
|
|
|
- if (!name) {
|
|
|
- kfree(device);
|
|
|
- goto error;
|
|
|
+ if (orig_dev->name) {
|
|
|
+ name = rcu_string_strdup(orig_dev->name->str, GFP_NOFS);
|
|
|
+ if (!name) {
|
|
|
+ kfree(device);
|
|
|
+ goto error;
|
|
|
+ }
|
|
|
+ rcu_assign_pointer(device->name, name);
|
|
|
}
|
|
|
- rcu_assign_pointer(device->name, name);
|
|
|
|
|
|
list_add(&device->dev_list, &fs_devices->devices);
|
|
|
device->fs_devices = fs_devices;
|