Skip to content
  1. Feb 16, 2021
  2. Feb 15, 2021
  3. Feb 14, 2021
  4. Feb 13, 2021
  5. Feb 12, 2021
    • Su Yue's avatar
      btrfs: initialize fs_info::csum_size earlier in open_ctree · 83c68bbc
      Su Yue authored
      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 55fc29be ("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: 55fc29be
      
       ("btrfs: use cached value of fs_info::csum_size everywhere")
      Signed-off-by: default avatarSu Yue <l@damenly.su>
      Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
      Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
      83c68bbc