From e55f8c73b6255b353c021ab59017a364dd527a86 Mon Sep 17 00:00:00 2001 From: Ard Biesheuvel Date: Tue, 19 Apr 2016 16:12:10 +0200 Subject: ArmPkg/ArmDmaLib: deal with NULL return value of UncachedAllocatePages () The allocation function UncachedAllocatePages () may return NULL, in which case our implementation of DmaAllocateBuffer () should return EFI_OUT_OF_RESOURCES rather than silently ignoring the NULL value and returning EFI_SUCCESS. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel Reviewed-by: Leif Lindholm --- ArmPkg/Library/ArmDmaLib/ArmDmaLib.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c b/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c index 54a49a1..1e6b288 100644 --- a/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c +++ b/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c @@ -216,6 +216,8 @@ DmaAllocateBuffer ( OUT VOID **HostAddress ) { + VOID *Allocation; + if (HostAddress == NULL) { return EFI_INVALID_PARAMETER; } @@ -226,13 +228,19 @@ DmaAllocateBuffer ( // We used uncached memory to keep coherency // if (MemoryType == EfiBootServicesData) { - *HostAddress = UncachedAllocatePages (Pages); + Allocation = UncachedAllocatePages (Pages); } else if (MemoryType == EfiRuntimeServicesData) { - *HostAddress = UncachedAllocateRuntimePages (Pages); + Allocation = UncachedAllocateRuntimePages (Pages); } else { return EFI_INVALID_PARAMETER; } + if (Allocation == NULL) { + return EFI_OUT_OF_RESOURCES; + } + + *HostAddress = Allocation; + return EFI_SUCCESS; } -- cgit v1.1