]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: check block group lookup in remove_range_from_remap_tree()
authorMark Harmstone <mark@harmstone.com>
Thu, 19 Feb 2026 14:30:59 +0000 (14:30 +0000)
committerDavid Sterba <dsterba@suse.com>
Thu, 26 Feb 2026 14:03:29 +0000 (15:03 +0100)
Add a check in remove_range_from_remap_tree() after we call
btrfs_lookup_block_group(), to check if it is NULL. This shouldn't
happen, but if it does we at least get an error rather than a segfault.

Reported-by: Chris Mason <clm@fb.com>
Link: https://lore.kernel.org/linux-btrfs/20260125125129.2245240-1-clm@meta.com/
Fixes: 979e1dc3d69e ("btrfs: handle deletions from remapped block group")
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/relocation.c

index 2119dddd6f8ee058b6223508b211078ff121cfc4..cdb53c0b26ec9c5e2c9e0598a001766183d4b5d4 100644 (file)
@@ -5985,6 +5985,9 @@ static int remove_range_from_remap_tree(struct btrfs_trans_handle *trans,
                struct btrfs_block_group *dest_bg;
 
                dest_bg = btrfs_lookup_block_group(fs_info, new_addr);
+               if (unlikely(!dest_bg))
+                       return -EUCLEAN;
+
                adjust_block_group_remap_bytes(trans, dest_bg, -overlap_length);
                btrfs_put_block_group(dest_bg);
                ret = btrfs_add_to_free_space_tree(trans,