mirror of https://github.com/acidanthera/audk.git
Add parameter checking for PEI service AllocatePages(), according to PI1.2 errata A.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10112 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
ded5aa23eb
commit
64ca68027b
|
@ -110,20 +110,20 @@ PeiInstallPeiMemory (
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
The purpose of the service is to publish an interface that allows
|
||||||
|
PEIMs to allocate memory ranges that are managed by the PEI Foundation.
|
||||||
|
|
||||||
Memory allocation service on permanent memory,
|
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
|
||||||
not usable prior to the memory installation.
|
@param MemoryType The type of memory to allocate.
|
||||||
|
@param Pages The number of contiguous 4 KB pages to allocate.
|
||||||
|
@param Memory Pointer to a physical address. On output, the address is set to the base
|
||||||
|
of the page range that was allocated.
|
||||||
|
|
||||||
|
@retval EFI_SUCCESS The memory range was successfully allocated.
|
||||||
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.
|
@retval EFI_OUT_OF_RESOURCES The pages could not be allocated.
|
||||||
@param MemoryType Type of memory to allocate.
|
@retval EFI_INVALID_PARAMETER Type is not equal to EfiLoaderCode, EfiLoaderData, EfiRuntimeServicesCode,
|
||||||
@param Pages Number of pages to allocate.
|
EfiRuntimeServicesData, EfiBootServicesCode, EfiBootServicesData,
|
||||||
@param Memory Pointer of memory allocated.
|
EfiACPIReclaimMemory, or EfiACPIMemoryNVS.
|
||||||
|
|
||||||
@retval EFI_SUCCESS The allocation was successful
|
|
||||||
@retval EFI_NOT_AVAILABLE_YET Called with permanent memory not available
|
|
||||||
@retval EFI_OUT_OF_RESOURCES There is not enough HOB heap to satisfy the requirement
|
|
||||||
to allocate the number of pages.
|
|
||||||
|
|
||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
|
@ -141,6 +141,17 @@ PeiAllocatePages (
|
||||||
EFI_PHYSICAL_ADDRESS *FreeMemoryBottom;
|
EFI_PHYSICAL_ADDRESS *FreeMemoryBottom;
|
||||||
UINTN RemainingPages;
|
UINTN RemainingPages;
|
||||||
|
|
||||||
|
if ((MemoryType != EfiLoaderCode) &&
|
||||||
|
(MemoryType != EfiLoaderData) &&
|
||||||
|
(MemoryType != EfiRuntimeServicesCode) &&
|
||||||
|
(MemoryType != EfiRuntimeServicesData) &&
|
||||||
|
(MemoryType != EfiBootServicesCode) &&
|
||||||
|
(MemoryType != EfiBootServicesData) &&
|
||||||
|
(MemoryType != EfiACPIReclaimMemory) &&
|
||||||
|
(MemoryType != EfiACPIMemoryNVS)) {
|
||||||
|
return EFI_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
|
||||||
PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS (PeiServices);
|
PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS (PeiServices);
|
||||||
Hob.Raw = PrivateData->HobList.Raw;
|
Hob.Raw = PrivateData->HobList.Raw;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue