diff options
author | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2016-04-19 16:12:10 +0200 |
---|---|---|
committer | Ard Biesheuvel <ard.biesheuvel@linaro.org> | 2016-05-10 14:38:59 +0200 |
commit | e55f8c73b6255b353c021ab59017a364dd527a86 (patch) | |
tree | cc5fbb2bb5c2783070f0799e5950fa1c7392ec63 /ArmPkg/Library | |
parent | 9c0dc0b01a79666c3ba8aa0c69ad92131aada113 (diff) | |
download | edk2-e55f8c73b6255b353c021ab59017a364dd527a86.tar.gz edk2-e55f8c73b6255b353c021ab59017a364dd527a86.tar.bz2 edk2-e55f8c73b6255b353c021ab59017a364dd527a86.zip |
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 <ard.biesheuvel@linaro.org>
Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
Diffstat (limited to 'ArmPkg/Library')
-rw-r--r-- | ArmPkg/Library/ArmDmaLib/ArmDmaLib.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c b/ArmPkg/Library/ArmDmaLib/ArmDmaLib.c index 54a49a18d3..1e6b288b10 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;
}
|