btrfs: simplify exit paths in btrfs_init_new_device
authorDavid Sterba <dsterba@suse.com>
Mon, 30 Oct 2017 18:29:46 +0000 (19:29 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 22 Jan 2018 15:08:12 +0000 (16:08 +0100)
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c

index f93994a49321a0535bb4925b2e4d6c87d7ecd2e4..3fa83ff9b30f3e7f347e82c307ce98749486ce85 100644 (file)
@@ -2345,17 +2345,15 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
 
        name = rcu_string_strdup(device_path, GFP_KERNEL);
        if (!name) {
-               free_device(device);
                ret = -ENOMEM;
-               goto error;
+               goto error_free_device;
        }
        rcu_assign_pointer(device->name, name);
 
        trans = btrfs_start_transaction(root, 0);
        if (IS_ERR(trans)) {
-               free_device(device);
                ret = PTR_ERR(trans);
-               goto error;
+               goto error_free_device;
        }
 
        q = bdev_get_queue(bdev);
@@ -2495,6 +2493,7 @@ error_trans:
                sb->s_flags |= SB_RDONLY;
        if (trans)
                btrfs_end_transaction(trans);
+error_free_device:
        free_device(device);
 error:
        blkdev_put(bdev, FMODE_EXCL);