On Tue, Apr 19, 2016 at 04:55:30PM +0200, Ard Biesheuvel wrote:
> 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 <[email protected]>

A clear fix which could go in separate from the rest of the series.

Reviewed-by: Leif Lindholm <[email protected]>

> ---
>  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 54a49a18d302..1e6b288b10b9 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;
>  }
>  
> -- 
> 2.5.0
> 
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to