{
        struct btrfs_block_group *block_group;
        struct btrfs_free_space_info *info;
-       struct btrfs_path *path;
+       BTRFS_PATH_AUTO_FREE(path);
        u32 extent_count, flags;
-       int ret;
 
        block_group = caching_ctl->block_group;
 
        path->reada = READA_FORWARD;
 
        info = search_free_space_info(NULL, block_group, path, 0);
-       if (IS_ERR(info)) {
-               ret = PTR_ERR(info);
-               goto out;
-       }
+       if (IS_ERR(info))
+               return PTR_ERR(info);
+
        extent_count = btrfs_free_space_extent_count(path->nodes[0], info);
        flags = btrfs_free_space_flags(path->nodes[0], info);
 
         * there.
         */
        if (flags & BTRFS_FREE_SPACE_USING_BITMAPS)
-               ret = load_free_space_bitmaps(caching_ctl, path, extent_count);
+               return load_free_space_bitmaps(caching_ctl, path, extent_count);
        else
-               ret = load_free_space_extents(caching_ctl, path, extent_count);
-
-out:
-       btrfs_free_path(path);
-       return ret;
+               return load_free_space_extents(caching_ctl, path, extent_count);
 }