]> git.ipfire.org Git - people/ms/linux.git/commit - fs/btrfs/tree-checker.c
btrfs: tree-checker: Check leaf chunk item size
authorQu Wenruo <wqu@suse.com>
Tue, 17 Dec 2019 10:58:20 +0000 (18:58 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 20 Jan 2020 15:40:56 +0000 (16:40 +0100)
commitf6d2a5c263afca84646cf3300dc13061bedbd99e
tree8a90ee52722dc29dedfd8a1263ce51764183d804
parent0ab575c5df5e4a7eb3a80c682de1165189d888e0
btrfs: tree-checker: Check leaf chunk item size

Inspired by btrfs-progs github issue #208, where chunk item in chunk
tree has invalid num_stripes (0).

Although that can already be caught by current btrfs_check_chunk_valid(),
that function doesn't really check item size as it needs to handle chunk
item in super block sys_chunk_array().

This patch will add two extra checks for chunk items in chunk tree:

- Basic chunk item size
  If the item is smaller than btrfs_chunk (which already contains one
  stripe), exit right now as reading num_stripes may even go beyond
  eb boundary.

- Item size check against num_stripes
  If item size doesn't match with calculated chunk size, then either the
  item size or the num_stripes is corrupted. Error out anyway.

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