From 20a4d1a54e8ea8898f5af4aa1fc6afa046f10875 Mon Sep 17 00:00:00 2001 From: Savva Mitrofanov Date: Wed, 28 Jun 2023 20:36:46 +0300 Subject: [PATCH] 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 --- Ext4Pkg/Ext4Dxe/BlockGroup.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/Ext4Pkg/Ext4Dxe/BlockGroup.c b/Ext4Pkg/Ext4Dxe/BlockGroup.c index f34cdc5dba..72ad8f69fc 100644 --- a/Ext4Pkg/Ext4Dxe/BlockGroup.c +++ b/Ext4Pkg/Ext4Dxe/BlockGroup.c @@ -169,14 +169,10 @@ Ext4CalculateBlockGroupDescChecksumGdtCsum ( ) { UINT16 Csum; - UINT16 Dummy; - Dummy = 0; - - Csum = CalculateCrc16Ansi (Partition->SuperBlock.s_uuid, 16, 0); + Csum = CalculateCrc16Ansi (Partition->SuperBlock.s_uuid, sizeof (Partition->SuperBlock.s_uuid), 0xFFFF); Csum = CalculateCrc16Ansi (&BlockGroupNum, sizeof (BlockGroupNum), Csum); Csum = CalculateCrc16Ansi (BlockGroupDesc, OFFSET_OF (EXT4_BLOCK_GROUP_DESC, bg_checksum), Csum); - Csum = CalculateCrc16Ansi (&Dummy, sizeof (Dummy), Csum); Csum = CalculateCrc16Ansi ( &BlockGroupDesc->bg_block_bitmap_hi,