summaryrefslogtreecommitdiffstats
path: root/UefiCpuPkg
diff options
context:
space:
mode:
authorDun Tan <dun.tan@intel.com>2023-03-07 11:51:32 +0800
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2023-03-27 08:21:58 +0000
commitc18fbd2c3162e5aa0f8017cad5ec3dcc6ba9099b (patch)
tree2366570577775408d0252968af02aedf042d4c2b /UefiCpuPkg
parentda3dad181e17b8c3d5c7c1ee8f33ebabf0086d6f (diff)
downloadedk2-c18fbd2c3162e5aa0f8017cad5ec3dcc6ba9099b.tar.gz
edk2-c18fbd2c3162e5aa0f8017cad5ec3dcc6ba9099b.tar.bz2
edk2-c18fbd2c3162e5aa0f8017cad5ec3dcc6ba9099b.zip
UefiCpuPkg/CpuPageTableLib: Add check for input Length
Add check for input Length in PageTableMap (). Return RETURN_SUCCESS when input Length is 0. Signed-off-by: Dun Tan <dun.tan@intel.com> Cc: Eric Dong <eric.dong@intel.com> Reviewed-by: Ray Ni <ray.ni@intel.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Tested-by: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'UefiCpuPkg')
-rw-r--r--UefiCpuPkg/Include/Library/CpuPageTableLib.h4
-rw-r--r--UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c6
2 files changed, 7 insertions, 3 deletions
diff --git a/UefiCpuPkg/Include/Library/CpuPageTableLib.h b/UefiCpuPkg/Include/Library/CpuPageTableLib.h
index 2dc9b7d18e..5f44ece548 100644
--- a/UefiCpuPkg/Include/Library/CpuPageTableLib.h
+++ b/UefiCpuPkg/Include/Library/CpuPageTableLib.h
@@ -1,7 +1,7 @@
/** @file
Public include file for PageTableLib library.
- Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
+ Copyright (c) 2022 - 2023, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
@@ -81,7 +81,7 @@ typedef enum {
@retval RETURN_BUFFER_TOO_SMALL The buffer is too small for page table creation/updating.
BufferSize is updated to indicate the expected buffer size.
Caller may still get RETURN_BUFFER_TOO_SMALL with the new BufferSize.
- @retval RETURN_SUCCESS PageTable is created/updated successfully.
+ @retval RETURN_SUCCESS PageTable is created/updated successfully or the input Length is 0.
**/
RETURN_STATUS
EFIAPI
diff --git a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c
index 52535e5a8d..218068a3e1 100644
--- a/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c
+++ b/UefiCpuPkg/Library/CpuPageTableLib/CpuPageTableMap.c
@@ -544,7 +544,7 @@ PageTableLibMapInLevel (
@retval RETURN_BUFFER_TOO_SMALL The buffer is too small for page table creation/updating.
BufferSize is updated to indicate the expected buffer size.
Caller may still get RETURN_BUFFER_TOO_SMALL with the new BufferSize.
- @retval RETURN_SUCCESS PageTable is created/updated successfully.
+ @retval RETURN_SUCCESS PageTable is created/updated successfully or the input Length is 0.
**/
RETURN_STATUS
EFIAPI
@@ -567,6 +567,10 @@ PageTableMap (
IA32_PAGE_LEVEL MaxLeafLevel;
IA32_MAP_ATTRIBUTE ParentAttribute;
+ if (Length == 0) {
+ return RETURN_SUCCESS;
+ }
+
if ((PagingMode == Paging32bit) || (PagingMode == PagingPae) || (PagingMode >= PagingModeMax)) {
//
// 32bit paging is never supported.