On 18 May 2017 at 16:04, Laszlo Ersek <[email protected]> wrote: > According to the PI spec, Volume 3, > EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL.EraseBlocks(): > >> The variable argument list is a list of tuples. Each tuple describes a >> range of LBAs to erase and consists of the following: >> * An EFI_LBA that indicates the starting LBA >> * A UINTN that indicates the number of blocks to erase > > (NB, in edk2, EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL is a typedef to > EFI_FIRMWARE_VOLUME_BLOCK2_PROTOCOL.) > > In this driver, the NumOfLba local variable is defined with type UINTN, > but the TYPE argument passed to VA_ARG() is UINT32. Fix the mismatch. > > In addition, update the DEBUG macro invocation where NumOfLba is formatted > with the %d conversion specifier: UINTN values should be converted to > UINT64 and printed with %Lu or %Lx for portability between 32-bit and > 64-bit. > > Cc: Ard Biesheuvel <[email protected]> > Cc: Jordan Justen <[email protected]> > Cc: Leif Lindholm <[email protected]> > Reported-by: Jordan Justen <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Laszlo Ersek <[email protected]>
Reviewed-by: Ard Biesheuvel <[email protected]> > --- > ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c > b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c > index 12a861267a86..3ea858f46ffb 100644 > --- a/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c > +++ b/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashFvbDxe.c > @@ -628,10 +628,16 @@ FvbEraseBlocks ( > } > > // How many Lba blocks are we requested to erase? > - NumOfLba = VA_ARG (Args, UINT32); > + NumOfLba = VA_ARG (Args, UINTN); > > // All blocks must be within range > - DEBUG ((DEBUG_BLKIO, "FvbEraseBlocks: Check if: ( StartingLba=%ld + > NumOfLba=%d - 1 ) > LastBlock=%ld.\n", Instance->StartLba + StartingLba, > NumOfLba, Instance->Media.LastBlock)); > + DEBUG (( > + DEBUG_BLKIO, > + "FvbEraseBlocks: Check if: ( StartingLba=%ld + NumOfLba=%Lu - 1 ) > > LastBlock=%ld.\n", > + Instance->StartLba + StartingLba, > + (UINT64)NumOfLba, > + Instance->Media.LastBlock > + )); > if ((NumOfLba == 0) || ((Instance->StartLba + StartingLba + NumOfLba - > 1) > Instance->Media.LastBlock)) { > VA_END (Args); > DEBUG ((EFI_D_ERROR, "FvbEraseBlocks: ERROR - Lba range goes past the > last Lba.\n")); > @@ -656,7 +662,7 @@ FvbEraseBlocks ( > } > > // How many Lba blocks are we requested to erase? > - NumOfLba = VA_ARG (Args, UINT32); > + NumOfLba = VA_ARG (Args, UINTN); > > // Go through each one and erase it > while (NumOfLba > 0) { > -- > 2.9.3 > > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

