On Mon, Jan 07, 2019 at 07:56:49AM +0100, Ard Biesheuvel wrote: > Ignore calls to ArmSetMemoryAttributes () when the region described > is outside of the 32-bit addressable range. This memory is not > mapped in the first place, and the current code does not deal with > the high bits correctly, resulting in hangs. > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Leif Lindholm <[email protected]> > --- > ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibCore.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibCore.c > b/ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibCore.c > index 3b3b20aa9b78..bffab83d4fd0 100644 > --- a/ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibCore.c > +++ b/ArmPkg/Library/ArmMmuLib/Arm/ArmMmuLibCore.c > @@ -744,6 +744,10 @@ ArmSetMemoryAttributes ( > UINT64 ChunkLength; > BOOLEAN FlushTlbs; > > + if (BaseAddress > (UINT64)MAX_ADDRESS - Length + 1) { > + return EFI_UNSUPPORTED; > + } > + > if (Length == 0) { > return EFI_SUCCESS; > } > -- > 2.20.1 > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

