btrfs: tree-checker: Check chunk item at tree block read time
authorQu Wenruo <wqu@suse.com>
Wed, 20 Mar 2019 05:42:33 +0000 (13:42 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 10 Nov 2020 11:35:56 +0000 (12:35 +0100)
commit3c06c86cd08fdabe2ed20cbc3ea5010dcd7d4b29
tree913160d2e7a57af74720ce723b8b47e995ed4fbe
parent782aa87c8f1d4472fc45697fdddbe8d47b56ebff
btrfs: tree-checker: Check chunk item at tree block read time

commit 075cb3c78fe7976c9f29ca1fa23f9728634ecefc upstream.

Since we have btrfs_check_chunk_valid() in tree-checker, let's do
chunk item verification in tree-checker too.

Since the tree-checker is run at endio time, if one chunk leaf fails
chunk verification, we can still retry the other copy, making btrfs more
robust to fuzzed image as we may still get a good chunk item.

Also since we have done chunk verification in tree block read time, skip
the btrfs_check_chunk_valid() call in read_one_chunk() if we're reading
chunk items from leaf.

Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/tree-checker.c
fs/btrfs/volumes.c