瀏覽代碼

Ext4Pkg: Fix incorrect checksum metadata feature check

We need to check EXT4_FEATURE_RO_COMPAT_METADATA_CSUM in the
FeatureRoCompat field instead of FeaturesCompat. The proper way to do
this is to use macro EXT4_HAS_METADATA_CSUM. 
Also, replace the EXT4_FEATURE_INCOMPAT_CSUM_SEED check with predefined
macro EXT4_HAS_INCOMPAT

Cc: Marvin Häuser <mhaeuser@posteo.de>
Cc: Pedro Falcato <pedro.falcato@gmail.com>
Cc: Vitaly Cheptsov <vit9696@protonmail.com>
Fixes: d9ceedca6c8f ("Ext4Pkg: Add Ext4Dxe driver.")
Signed-off-by: Savva Mitrofanov <savvamtr@gmail.com>
Reviewed-by: Pedro Falcato <pedro.falcato@gmail.com>
Reviewed-by: Marvin Häuser <mhaeuser@posteo.de>
Savva Mitrofanov 1 年之前
父節點
當前提交
0bea20a53a
共有 1 個文件被更改,包括 2 次插入4 次删除
  1. 2 4
      Features/Ext4Pkg/Ext4Dxe/Superblock.c

+ 2 - 4
Features/Ext4Pkg/Ext4Dxe/Superblock.c

@@ -220,13 +220,11 @@ Ext4OpenSuperblock (
   }
 
   // At the time of writing, it's the only supported checksum.
-  if (Partition->FeaturesCompat & EXT4_FEATURE_RO_COMPAT_METADATA_CSUM &&
-      (Sb->s_checksum_type != EXT4_CHECKSUM_CRC32C))
-  {
+  if (EXT4_HAS_METADATA_CSUM (Partition) && (Sb->s_checksum_type != EXT4_CHECKSUM_CRC32C)) {
     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;
   } else {
     Partition->InitialSeed = Ext4CalculateChecksum (Partition, Sb->s_uuid, 16, ~0U);