btrfs: don't clobber ret in btrfs_validate_super()
authorMark Harmstone <maharmstone@fb.com>
Tue, 11 Mar 2025 16:39:25 +0000 (16:39 +0000)
committerDavid Sterba <dsterba@suse.com>
Tue, 18 Mar 2025 19:35:54 +0000 (20:35 +0100)
Commit 2a9bb78cfd36 ("btrfs: validate system chunk array at
btrfs_validate_super()") introduces a call to validate_sys_chunk_array()
in btrfs_validate_super(), which clobbers the value of ret set earlier.
This has the effect of negating the validity checks done earlier, making
it so btrfs could potentially try to mount invalid filesystems.

Fixes: 2a9bb78cfd36 ("btrfs: validate system chunk array at btrfs_validate_super()")
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Mark Harmstone <maharmstone@fb.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/disk-io.c

index 1fae31f781d880587b20d9b949603a3739c17aff..1a916716cefebe42b67e17a3cd9c55a09ab49e63 100644 (file)
@@ -2562,6 +2562,9 @@ int btrfs_validate_super(const struct btrfs_fs_info *fs_info,
                ret = -EINVAL;
        }
 
+       if (ret)
+               return ret;
+
        ret = validate_sys_chunk_array(fs_info, sb);
 
        /*