diff --git a/fs/btrfs/space-info.c b/fs/btrfs/space-info.c index 9d47678875b7..b2c90696b86b 100644 --- a/fs/btrfs/space-info.c +++ b/fs/btrfs/space-info.c @@ -291,18 +291,22 @@ static int create_space_info(struct btrfs_fs_info *info, u64 flags) BTRFS_SUB_GROUP_DATA_RELOC, 0); if (ret) - return ret; + goto out_free; } ret = btrfs_sysfs_add_space_info_type(info, space_info); if (ret) - return ret; + goto out_free; list_add(&space_info->list, &info->space_info); if (flags & BTRFS_BLOCK_GROUP_DATA) info->data_sinfo = space_info; return ret; + +out_free: + kfree(space_info); + return ret; } int btrfs_init_space_info(struct btrfs_fs_info *fs_info)