On Sat, 29 Oct 2022 at 11:29, Wenyi Xie <xiewen...@huawei.com> wrote:
>
> The size of array BlockMap is 1 in struct FirmwareVolumeHeader, but in
> function InitializeFvAndVariableStoreHeaders, BlockMap[1] is been written.

The size of BlockMap[] is not 1. BlockMap is a flexible array declared
in an old fashioned way, and because the type definition is covered by
the spec, we can not change it. Given that this is established idiom,
compilers don't tend to warn about this.

> The memory of BlockMap[1] is already allocated, so the code is OK. But
> it is better to use a new point to assign this memory.
>
> Cc: Leif Lindholm <quic_llind...@quicinc.com>
> Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org>
> Signed-off-by: Wenyi Xie <xiewen...@huawei.com>

Thanks for the patch but this driver is going to be deleted soon so no point.

There is new version of this driver in OvmfPkg/ but given the above, I
don't think there is anything that needs fixing here.

> ---
>  ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvb.c | 10 ++++++++--
>  1 file changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvb.c 
> b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvb.c
> index 0767581308d2..2130e2e76344 100644
> --- a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvb.c
> +++ b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvb.c
> @@ -47,6 +47,7 @@ InitializeFvAndVariableStoreHeaders (
>    VOID                        *Headers;
>    UINTN                       HeadersLength;
>    EFI_FIRMWARE_VOLUME_HEADER  *FirmwareVolumeHeader;
> +  EFI_FV_BLOCK_MAP_ENTRY      *BlockMapEntry;
>    VARIABLE_STORE_HEADER       *VariableStoreHeader;
>    UINT32                      NvStorageFtwSpareSize;
>    UINT32                      NvStorageFtwWorkingSize;
> @@ -151,10 +152,15 @@ InitializeFvAndVariableStoreHeaders (
>    FirmwareVolumeHeader->Revision              = EFI_FVH_REVISION;
>    FirmwareVolumeHeader->BlockMap[0].NumBlocks = Instance->Media.LastBlock + 
> 1;
>    FirmwareVolumeHeader->BlockMap[0].Length    = Instance->Media.BlockSize;
> -  FirmwareVolumeHeader->BlockMap[1].NumBlocks = 0;
> -  FirmwareVolumeHeader->BlockMap[1].Length    = 0;
>    FirmwareVolumeHeader->Checksum              = CalculateCheckSum16 ((UINT16 
> *)FirmwareVolumeHeader, FirmwareVolumeHeader->HeaderLength);
>
> +  //
> +  // EFI_FV_BLOCK_MAP_ENTRY
> +  //
> +  BlockMapEntry            = (EFI_FV_BLOCK_MAP_ENTRY *)((UINTN)Headers + 
> sizeof (EFI_FIRMWARE_VOLUME_HEADER));
> +  BlockMapEntry->NumBlocks = 0;
> +  BlockMapEntry->Length    = 0;
> +
>    //
>    // VARIABLE_STORE_HEADER
>    //
> --
> 2.20.1.windows.1
>


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#95721): https://edk2.groups.io/g/devel/message/95721
Mute This Topic: https://groups.io/mt/94644092/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to