[edk2-devel] [edk2-platforms][PATCH 3/4] Drivers/OpTee: address cast build warning issue in 32b mode

Sami Mujawar sami.mujawar at arm.com
Wed May 12 10:24:27 UTC 2021


Hi Etienn,

Thank you for this patch.

These changes look good to me.

Reviewed-by: Sami Mujawar <sami.mujawar at arm.com>

Regards,

Sami Mujawar

On 10/05/2021 08:53 AM, Etienne Carriere wrote:
> Use (UINTN) cast to cast physical or virtual address values to the
> pointer size before casting from/to a pointer value.
>
> Cc: Ard Biesheuvel <ardb+tianocore at kernel.org>
> Cc: Ilias Apalodimas <ilias.apalodimas at linaro.org>
> Cc: Leif Lindholm <leif at nuviainc.com>
> Cc: Sami Mujawar <sami.mujawar at arm.com>
> Signed-off-by: Etienne Carriere <etienne.carriere at linaro.org>
> ---
>   Drivers/OpTee/OpteeRpmbPkg/OpTeeRpmbFvb.c | 21 +++++++++++++-------
>   1 file changed, 14 insertions(+), 7 deletions(-)
>
> diff --git a/Drivers/OpTee/OpteeRpmbPkg/OpTeeRpmbFvb.c b/Drivers/OpTee/OpteeRpmbPkg/OpTeeRpmbFvb.c
> index 6eb19bed0e..83c2750368 100644
> --- a/Drivers/OpTee/OpteeRpmbPkg/OpTeeRpmbFvb.c
> +++ b/Drivers/OpTee/OpteeRpmbPkg/OpTeeRpmbFvb.c
> @@ -305,7 +305,8 @@ OpTeeRpmbFvbRead (
>       }
>     }
>
> -  Base = (VOID *)Instance->MemBaseAddress + (Lba * Instance->BlockSize) + Offset;
> +  Base = (VOID *)(UINTN)Instance->MemBaseAddress + (Lba * Instance->BlockSize) +
> +         Offset;
>     // We could read the data from the RPMB instead of memory
>     // The 2 copies should already be identical
>     // Copy from memory image
> @@ -387,7 +388,8 @@ OpTeeRpmbFvbWrite (
>         return Status;
>       }
>     }
> -  Base = (VOID *)Instance->MemBaseAddress + Lba * Instance->BlockSize + Offset;
> +  Base = (VOID *)(UINTN)Instance->MemBaseAddress + (Lba * Instance->BlockSize) +
> +         Offset;
>     Status = ReadWriteRpmb (
>                SP_SVC_RPMB_WRITE,
>                (UINTN)Buffer,
> @@ -477,7 +479,8 @@ OpTeeRpmbFvbErase (
>         return EFI_INVALID_PARAMETER;
>       }
>       NumBytes = NumLba * Instance->BlockSize;
> -    Base = (VOID *)Instance->MemBaseAddress + Start * Instance->BlockSize;
> +    Base = (VOID *)(UINTN)Instance->MemBaseAddress +
> +           (Start * Instance->BlockSize);
>       Buf = AllocatePool (NumLba * Instance->BlockSize);
>       if (Buf == NULL) {
>         return EFI_DEVICE_ERROR;
> @@ -689,7 +692,7 @@ InitializeFvAndVariableStoreHeaders (
>       goto Exit;
>     }
>     // Install the combined header in memory
> -  CopyMem ((VOID*)Instance->MemBaseAddress, Headers, HeadersLength);
> +  CopyMem ((VOID*)(UINTN)Instance->MemBaseAddress, Headers, HeadersLength);
>
>   Exit:
>     FreePool (Headers);
> @@ -747,14 +750,18 @@ FvbInitialize (
>     // Read the file from disk and copy it to memory
>     ReadEntireFlash (Instance);
>
> -  FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *)Instance->MemBaseAddress;
> +  FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)Instance->MemBaseAddress;
>     Status = ValidateFvHeader (FwVolHeader);
>     if (EFI_ERROR (Status)) {
>       // There is no valid header, so time to install one.
>       DEBUG ((DEBUG_INFO, "%a: The FVB Header is not valid.\n", __FUNCTION__));
>
>       // Reset memory
> -    SetMem64 ((VOID *)Instance->MemBaseAddress, Instance->NBlocks * Instance->BlockSize, ~0UL);
> +    SetMem64 (
> +      (VOID *)(UINTN)Instance->MemBaseAddress,
> +      Instance->NBlocks * Instance->BlockSize,
> +      ~0UL
> +      );
>       DEBUG ((DEBUG_INFO, "%a: Erasing Flash.\n", __FUNCTION__));
>       Status = ReadWriteRpmb (
>                  SP_SVC_RPMB_WRITE,
> @@ -827,7 +834,7 @@ OpTeeRpmbFvbInit (
>     mInstance.FvbProtocol.Write              = OpTeeRpmbFvbWrite;
>     mInstance.FvbProtocol.Read               = OpTeeRpmbFvbRead;
>
> -  mInstance.MemBaseAddress = (EFI_PHYSICAL_ADDRESS)Addr;
> +  mInstance.MemBaseAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)Addr;
>     mInstance.Signature      = FLASH_SIGNATURE;
>     mInstance.Initialize     = FvbInitialize;
>     mInstance.BlockSize      = EFI_PAGE_SIZE;

IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#75067): https://edk2.groups.io/g/devel/message/75067
Mute This Topic: https://groups.io/mt/82714634/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list