btrfs: tree-checker: check for BTRFS_BLOCK_FLAG_FULL_BACKREF being set improperly
authorJosef Bacik <josef@toxicpanda.com>
Fri, 12 Mar 2021 20:25:26 +0000 (15:25 -0500)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Apr 2021 15:25:21 +0000 (17:25 +0200)
We need to validate that a data extent item does not have the
FULL_BACKREF flag set on its flags.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/tree-checker.c

index f4ade82..a8b2e0d 100644 (file)
@@ -1290,6 +1290,11 @@ static int check_extent_item(struct extent_buffer *leaf,
                                   key->offset, fs_info->sectorsize);
                        return -EUCLEAN;
                }
+               if (unlikely(flags & BTRFS_BLOCK_FLAG_FULL_BACKREF)) {
+                       extent_err(leaf, slot,
+                       "invalid extent flag, data has full backref set");
+                       return -EUCLEAN;
+               }
        }
        ptr = (unsigned long)(struct btrfs_extent_item *)(ei + 1);