diff options
author | Liming Gao <liming.gao@intel.com> | 2016-12-01 14:47:55 +0800 |
---|---|---|
committer | Liming Gao <liming.gao@intel.com> | 2016-12-12 10:52:31 +0800 |
commit | ddfae2640c59e6226f2a9242483b7b294edaccab (patch) | |
tree | ae94aa7fcb61e09bff800756c79dc35b6411edcb /MdeModulePkg | |
parent | d5aef955b917e1afc2a76b68f91154aa77e0e12c (diff) | |
download | edk2-ddfae2640c59e6226f2a9242483b7b294edaccab.tar.gz edk2-ddfae2640c59e6226f2a9242483b7b294edaccab.tar.bz2 edk2-ddfae2640c59e6226f2a9242483b7b294edaccab.zip |
MdeModulePkg PiSmmCore: Update FreePages to handle zero address and pages
https://bugzilla.tianocore.org/show_bug.cgi?id=278
Zero memory address or zero number pages are invalid to SmmFreePages().
Cc: Star Zeng <star.zeng@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
Diffstat (limited to 'MdeModulePkg')
-rw-r--r-- | MdeModulePkg/Core/PiSmmCore/Page.c | 8 | ||||
-rw-r--r-- | MdeModulePkg/Core/PiSmmCore/PiSmmCore.h | 4 |
2 files changed, 6 insertions, 6 deletions
diff --git a/MdeModulePkg/Core/PiSmmCore/Page.c b/MdeModulePkg/Core/PiSmmCore/Page.c index 5f19d7e6c9..1bc8fd82c8 100644 --- a/MdeModulePkg/Core/PiSmmCore/Page.c +++ b/MdeModulePkg/Core/PiSmmCore/Page.c @@ -861,7 +861,7 @@ InternalMergeNodes ( @param[in] AddRegion If this memory is new added region.
@retval EFI_NOT_FOUND Could not find the entry that covers the range.
- @retval EFI_INVALID_PARAMETER Address not aligned.
+ @retval EFI_INVALID_PARAMETER Address not aligned, Address is zero or NumberOfPages is zero.
@return EFI_SUCCESS Pages successfully freed.
**/
@@ -875,7 +875,7 @@ SmmInternalFreePagesEx ( LIST_ENTRY *Node;
FREE_PAGE_LIST *Pages;
- if ((Memory & EFI_PAGE_MASK) != 0) {
+ if (((Memory & EFI_PAGE_MASK) != 0) || (Memory == 0) || (NumberOfPages == 0)) {
return EFI_INVALID_PARAMETER;
}
@@ -933,7 +933,7 @@ SmmInternalFreePagesEx ( @param[in] NumberOfPages The number of pages to free.
@retval EFI_NOT_FOUND Could not find the entry that covers the range.
- @retval EFI_INVALID_PARAMETER Address not aligned.
+ @retval EFI_INVALID_PARAMETER Address not aligned, Address is zero or NumberOfPages is zero.
@return EFI_SUCCESS Pages successfully freed.
**/
@@ -954,7 +954,7 @@ SmmInternalFreePages ( @param NumberOfPages The number of pages to free.
@retval EFI_NOT_FOUND Could not find the entry that covers the range.
- @retval EFI_INVALID_PARAMETER Address not aligned.
+ @retval EFI_INVALID_PARAMETER Address not aligned, Address is zero or NumberOfPages is zero.
@return EFI_SUCCESS Pages successfully freed.
**/
diff --git a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h index 8df1e500f0..d1e7791302 100644 --- a/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h +++ b/MdeModulePkg/Core/PiSmmCore/PiSmmCore.h @@ -312,7 +312,7 @@ SmmInternalAllocatePages ( @param NumberOfPages The number of pages to free
@retval EFI_NOT_FOUND Could not find the entry that covers the range
- @retval EFI_INVALID_PARAMETER Address not aligned
+ @retval EFI_INVALID_PARAMETER Address not aligned, Address is zero or NumberOfPages is zero.
@return EFI_SUCCESS Pages successfully freed.
**/
@@ -330,7 +330,7 @@ SmmFreePages ( @param NumberOfPages The number of pages to free
@retval EFI_NOT_FOUND Could not find the entry that covers the range
- @retval EFI_INVALID_PARAMETER Address not aligned
+ @retval EFI_INVALID_PARAMETER Address not aligned, Address is zero or NumberOfPages is zero.
@return EFI_SUCCESS Pages successfully freed.
**/
|