Ext4Pkg: Fix incorrect checksum metadata feature check

Missing comparison != 0 leads to broken logic condition. Also replaced
CSUM_SEED feature_incompat check with predefined macro EXT4_HAS_INCOMPAT

Signed-off-by: Savva Mitrofanov <savvamtr@gmail.com>
This commit is contained in:
Savva Mitrofanov 2022-10-27 00:39:06 +06:00
parent 7413548584
commit 2d406aacfb
No known key found for this signature in database
GPG Key ID: 774924031750BF64

View File

@ -220,13 +220,11 @@ Ext4OpenSuperblock (
} }
// At the time of writing, it's the only supported checksum. // At the time of writing, it's the only supported checksum.
if (Partition->FeaturesCompat & EXT4_FEATURE_RO_COMPAT_METADATA_CSUM && if (EXT4_HAS_METADATA_CSUM (Partition) && (Sb->s_checksum_type != EXT4_CHECKSUM_CRC32C)) {
(Sb->s_checksum_type != EXT4_CHECKSUM_CRC32C))
{
return EFI_UNSUPPORTED; return EFI_UNSUPPORTED;
} }
if ((Partition->FeaturesIncompat & EXT4_FEATURE_INCOMPAT_CSUM_SEED) != 0) { if (EXT4_HAS_INCOMPAT (Partition, EXT4_FEATURE_INCOMPAT_CSUM_SEED)) {
Partition->InitialSeed = Sb->s_checksum_seed; Partition->InitialSeed = Sb->s_checksum_seed;
} else { } else {
Partition->InitialSeed = Ext4CalculateChecksum (Partition, Sb->s_uuid, 16, ~0U); Partition->InitialSeed = Ext4CalculateChecksum (Partition, Sb->s_uuid, 16, ~0U);