Skip to content

Commit 6d97680

Browse files
etienne-lmsardbiesheuvel
authored andcommitted
Drivers/OpTee: address cast build warning issue in 32b mode
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@kernel.org> Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Sami Mujawar <sami.mujawar@arm.com> Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
1 parent a4b55b7 commit 6d97680

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

Drivers/OpTee/OpteeRpmbPkg/OpTeeRpmbFvb.c

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,8 @@ OpTeeRpmbFvbRead (
305305
}
306306
}
307307

308-
Base = (VOID *)Instance->MemBaseAddress + (Lba * Instance->BlockSize) + Offset;
308+
Base = (VOID *)(UINTN)Instance->MemBaseAddress + (Lba * Instance->BlockSize) +
309+
Offset;
309310
// We could read the data from the RPMB instead of memory
310311
// The 2 copies should already be identical
311312
// Copy from memory image
@@ -387,7 +388,8 @@ OpTeeRpmbFvbWrite (
387388
return Status;
388389
}
389390
}
390-
Base = (VOID *)Instance->MemBaseAddress + Lba * Instance->BlockSize + Offset;
391+
Base = (VOID *)(UINTN)Instance->MemBaseAddress + (Lba * Instance->BlockSize) +
392+
Offset;
391393
Status = ReadWriteRpmb (
392394
SP_SVC_RPMB_WRITE,
393395
(UINTN)Buffer,
@@ -477,7 +479,8 @@ OpTeeRpmbFvbErase (
477479
return EFI_INVALID_PARAMETER;
478480
}
479481
NumBytes = NumLba * Instance->BlockSize;
480-
Base = (VOID *)Instance->MemBaseAddress + Start * Instance->BlockSize;
482+
Base = (VOID *)(UINTN)Instance->MemBaseAddress +
483+
(Start * Instance->BlockSize);
481484
Buf = AllocatePool (NumLba * Instance->BlockSize);
482485
if (Buf == NULL) {
483486
return EFI_DEVICE_ERROR;
@@ -689,7 +692,7 @@ InitializeFvAndVariableStoreHeaders (
689692
goto Exit;
690693
}
691694
// Install the combined header in memory
692-
CopyMem ((VOID*)Instance->MemBaseAddress, Headers, HeadersLength);
695+
CopyMem ((VOID*)(UINTN)Instance->MemBaseAddress, Headers, HeadersLength);
693696

694697
Exit:
695698
FreePool (Headers);
@@ -747,14 +750,18 @@ FvbInitialize (
747750
// Read the file from disk and copy it to memory
748751
ReadEntireFlash (Instance);
749752

750-
FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *)Instance->MemBaseAddress;
753+
FwVolHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)Instance->MemBaseAddress;
751754
Status = ValidateFvHeader (FwVolHeader);
752755
if (EFI_ERROR (Status)) {
753756
// There is no valid header, so time to install one.
754757
DEBUG ((DEBUG_INFO, "%a: The FVB Header is not valid.\n", __FUNCTION__));
755758

756759
// Reset memory
757-
SetMem64 ((VOID *)Instance->MemBaseAddress, Instance->NBlocks * Instance->BlockSize, ~0UL);
760+
SetMem64 (
761+
(VOID *)(UINTN)Instance->MemBaseAddress,
762+
Instance->NBlocks * Instance->BlockSize,
763+
~0UL
764+
);
758765
DEBUG ((DEBUG_INFO, "%a: Erasing Flash.\n", __FUNCTION__));
759766
Status = ReadWriteRpmb (
760767
SP_SVC_RPMB_WRITE,
@@ -827,7 +834,7 @@ OpTeeRpmbFvbInit (
827834
mInstance.FvbProtocol.Write = OpTeeRpmbFvbWrite;
828835
mInstance.FvbProtocol.Read = OpTeeRpmbFvbRead;
829836

830-
mInstance.MemBaseAddress = (EFI_PHYSICAL_ADDRESS)Addr;
837+
mInstance.MemBaseAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)Addr;
831838
mInstance.Signature = FLASH_SIGNATURE;
832839
mInstance.Initialize = FvbInitialize;
833840
mInstance.BlockSize = EFI_PAGE_SIZE;

0 commit comments

Comments
 (0)