On Thu, Feb 11, 2021 at 04:38:28PM +0800, Su Yue wrote: > User reported that btrfs-progs misc-tests/028-superblock-recover fails: > [TEST/misc] 028-superblock-recover > unexpected success: mounted fs with corrupted superblock > test failed for case 028-superblock-recover > > The test case expects that a broken image with bad superblock will be > rejected to be mounted. However, the test image just passed csum check > of superblock and was successfully mounted. > > Commit 55fc29bed8dd ("btrfs: use cached value of fs_info::csum_size > everywhere") replaces all calls to btrfs_super_csum_size by > fs_info::csum_size. The calls include the place where fs_info->csum_size > is not initialized. So btrfs_check_super_csum() passes because memcmp() > with len 0 always returns 0. > > Fix it by caching csum size in btrfs_fs_info::csum_size once we know the > csum type in superblock is valid in open_ctree(). > > Link: https://github.com/kdave/btrfs-progs/issues/250 > Fixes: 55fc29bed8dd ("btrfs: use cached value of fs_info::csum_size > everywhere")
That's a new commit in 5.11 and the bug looks serious, I'll need to send one more pull request. Thanks for the fix.