diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index afab6ca14d0336a0ee615a377ff21e87d539d941..d1867cda92a7ead008fabd42faa4441f5ed44a56 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -629,7 +629,7 @@ static int btrfs_get_sb(struct file_system_type *fs_type, int flags, if (IS_ERR(root)) { error = PTR_ERR(root); deactivate_locked_super(s); - goto error; + goto error_free_subvol_name; } /* if they gave us a subvolume name bind mount into that */ if (strcmp(subvol_name, ".")) { @@ -643,14 +643,14 @@ static int btrfs_get_sb(struct file_system_type *fs_type, int flags, deactivate_locked_super(s); error = PTR_ERR(new_root); dput(root); - goto error_close_devices; + goto error_free_subvol_name; } if (!new_root->d_inode) { dput(root); dput(new_root); deactivate_locked_super(s); error = -ENXIO; - goto error_close_devices; + goto error_free_subvol_name; } dput(root); root = new_root; @@ -668,7 +668,6 @@ static int btrfs_get_sb(struct file_system_type *fs_type, int flags, btrfs_close_devices(fs_devices); error_free_subvol_name: kfree(subvol_name); -error: return error; }