Ext4Pkg: Fix GdtCsum calculation for block group descriptor

Doesn't take into account the empty checksum field and passes the correct initial value of 0xFFFF into the CRC16-ANSI function

Signed-off-by: Savva Mitrofanov <savvamtr@gmail.com>
This commit is contained in:
Savva Mitrofanov 2023-06-28 20:36:46 +03:00
parent a166c3d82f
commit 20a4d1a54e
No known key found for this signature in database
GPG Key ID: 774924031750BF64

View File

@ -169,14 +169,10 @@ Ext4CalculateBlockGroupDescChecksumGdtCsum (
) )
{ {
UINT16 Csum; UINT16 Csum;
UINT16 Dummy;
Dummy = 0; Csum = CalculateCrc16Ansi (Partition->SuperBlock.s_uuid, sizeof (Partition->SuperBlock.s_uuid), 0xFFFF);
Csum = CalculateCrc16Ansi (Partition->SuperBlock.s_uuid, 16, 0);
Csum = CalculateCrc16Ansi (&BlockGroupNum, sizeof (BlockGroupNum), Csum); Csum = CalculateCrc16Ansi (&BlockGroupNum, sizeof (BlockGroupNum), Csum);
Csum = CalculateCrc16Ansi (BlockGroupDesc, OFFSET_OF (EXT4_BLOCK_GROUP_DESC, bg_checksum), Csum); Csum = CalculateCrc16Ansi (BlockGroupDesc, OFFSET_OF (EXT4_BLOCK_GROUP_DESC, bg_checksum), Csum);
Csum = CalculateCrc16Ansi (&Dummy, sizeof (Dummy), Csum);
Csum = Csum =
CalculateCrc16Ansi ( CalculateCrc16Ansi (
&BlockGroupDesc->bg_block_bitmap_hi, &BlockGroupDesc->bg_block_bitmap_hi,