Reviewed-by: jiewen....@intel.com

> -----Original Message-----
> From: Wang, Jian J
> Sent: Wednesday, March 7, 2018 12:41 PM
> To: edk2-devel@lists.01.org
> Cc: Zeng, Star <star.z...@intel.com>; Dong, Eric <eric.d...@intel.com>; Yao,
> Jiewen <jiewen....@intel.com>
> Subject: [PATCH] MdeModulePkg/Core: fix too many available pages between
> BS_Data
> 
> The root cause is an unnecessary check to Size parameter in function
> AdjustMemoryS(). It will cause one standalone free page (happen to have
> Guard page around) in the free memory list cannot be allocated, even if
> the requested memory size is less than a page.
> 
>   //
>   // At least one more page needed for Guard page.
>   //
>   if (Size < (SizeRequested + EFI_PAGES_TO_SIZE (1))) {
>     return 0;
>   }
> 
> The following code in the same function actually covers above check
> implicitly. So the fix is simply removing above check.
> 
> Cc: Star Zeng <star.z...@intel.com>
> Cc: Eric Dong <eric.d...@intel.com>
> Cc: Jiewen Yao <jiewen....@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Jian J Wang <jian.j.w...@intel.com>
> ---
>  MdeModulePkg/Core/Dxe/Mem/HeapGuard.c   | 9 +--------
>  MdeModulePkg/Core/PiSmmCore/HeapGuard.c | 9 +--------
>  2 files changed, 2 insertions(+), 16 deletions(-)
> 
> diff --git a/MdeModulePkg/Core/Dxe/Mem/HeapGuard.c
> b/MdeModulePkg/Core/Dxe/Mem/HeapGuard.c
> index d7906e08c5..19245049c2 100644
> --- a/MdeModulePkg/Core/Dxe/Mem/HeapGuard.c
> +++ b/MdeModulePkg/Core/Dxe/Mem/HeapGuard.c
> @@ -1,7 +1,7 @@
>  /** @file
>    UEFI Heap Guard functions.
> 
> -Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2017-2018, Intel Corporation. All rights reserved.<BR>
>  This program and the accompanying materials
>  are licensed and made available under the terms and conditions of the BSD
> License
>  which accompanies this distribution.  The full text of the license may be 
> found
> at
> @@ -905,13 +905,6 @@ AdjustMemoryS (
> 
>    Target = Start + Size - SizeRequested;
> 
> -  //
> -  // At least one more page needed for Guard page.
> -  //
> -  if (Size < (SizeRequested + EFI_PAGES_TO_SIZE (1))) {
> -    return 0;
> -  }
> -
>    if (!IsGuardPage (Start + Size)) {
>      // No Guard at tail to share. One more page is needed.
>      Target -= EFI_PAGES_TO_SIZE (1);
> diff --git a/MdeModulePkg/Core/PiSmmCore/HeapGuard.c
> b/MdeModulePkg/Core/PiSmmCore/HeapGuard.c
> index c5ffb26342..aa9c25d102 100644
> --- a/MdeModulePkg/Core/PiSmmCore/HeapGuard.c
> +++ b/MdeModulePkg/Core/PiSmmCore/HeapGuard.c
> @@ -1,7 +1,7 @@
>  /** @file
>    UEFI Heap Guard functions.
> 
> -Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2017-2018, Intel Corporation. All rights reserved.<BR>
>  This program and the accompanying materials
>  are licensed and made available under the terms and conditions of the BSD
> License
>  which accompanies this distribution.  The full text of the license may be 
> found
> at
> @@ -888,13 +888,6 @@ AdjustMemoryS (
> 
>    Target = Start + Size - SizeRequested;
> 
> -  //
> -  // At least one more page needed for Guard page.
> -  //
> -  if (Size < (SizeRequested + EFI_PAGES_TO_SIZE (1))) {
> -    return 0;
> -  }
> -
>    if (!IsGuardPage (Start + Size)) {
>      // No Guard at tail to share. One more page is needed.
>      Target -= EFI_PAGES_TO_SIZE (1);
> --
> 2.14.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to