]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: fix chunk map leak in btrfs_map_block() after btrfs_translate_remap()
authorMark Harmstone <mark@harmstone.com>
Fri, 20 Feb 2026 12:52:56 +0000 (12:52 +0000)
committerDavid Sterba <dsterba@suse.com>
Thu, 26 Feb 2026 14:03:29 +0000 (15:03 +0100)
If the call to btrfs_translate_remap() in btrfs_map_block() returns an
error code, we were leaking the chunk map. Fix it by jumping to out
rather than returning directly.

Reported-by: Chris Mason <clm@fb.com>
Link: https://lore.kernel.org/linux-btrfs/20260125125830.2352988-1-clm@meta.com/
Fixes: 18ba64992871 ("btrfs: redirect I/O for remapped block groups")
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Mark Harmstone <mark@harmstone.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c

index b8cbd3ecb94d34cfebf487adf173ddfa9b4224f0..3c37c5d2267bfdf768572b70d51c59df9e03d95b 100644 (file)
@@ -6907,7 +6907,7 @@ int btrfs_map_block(struct btrfs_fs_info *fs_info, enum btrfs_map_op op,
 
                ret = btrfs_translate_remap(fs_info, &new_logical, length);
                if (ret)
-                       return ret;
+                       goto out;
 
                if (new_logical != logical) {
                        btrfs_free_chunk_map(map);