Update the heap migration logic to avoid memory overflow.
Signed-off-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15036 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
		@@ -661,6 +661,7 @@ PeiDispatcher (
 | 
				
			|||||||
  PEIM_FILE_HANDLE_EXTENDED_DATA      ExtendedData;
 | 
					  PEIM_FILE_HANDLE_EXTENDED_DATA      ExtendedData;
 | 
				
			||||||
  EFI_PEI_TEMPORARY_RAM_SUPPORT_PPI   *TemporaryRamSupportPpi;
 | 
					  EFI_PEI_TEMPORARY_RAM_SUPPORT_PPI   *TemporaryRamSupportPpi;
 | 
				
			||||||
  UINT64                              NewStackSize;
 | 
					  UINT64                              NewStackSize;
 | 
				
			||||||
 | 
					  UINTN                               HeapTemporaryRamSize;
 | 
				
			||||||
  EFI_PHYSICAL_ADDRESS                BaseOfNewHeap;
 | 
					  EFI_PHYSICAL_ADDRESS                BaseOfNewHeap;
 | 
				
			||||||
  EFI_PHYSICAL_ADDRESS                TopOfNewStack;
 | 
					  EFI_PHYSICAL_ADDRESS                TopOfNewStack;
 | 
				
			||||||
  EFI_PHYSICAL_ADDRESS                TopOfOldStack;
 | 
					  EFI_PHYSICAL_ADDRESS                TopOfOldStack;
 | 
				
			||||||
@@ -1018,7 +1019,9 @@ PeiDispatcher (
 | 
				
			|||||||
                //
 | 
					                //
 | 
				
			||||||
                // Migrate Heap
 | 
					                // Migrate Heap
 | 
				
			||||||
                //
 | 
					                //
 | 
				
			||||||
                CopyMem ((UINT8 *) (UINTN) BaseOfNewHeap, (UINT8 *) PeiTemporaryRamBase, PeiTemporaryRamSize);
 | 
					                HeapTemporaryRamSize = (UINTN) (Private->HobList.HandoffInformationTable->EfiFreeMemoryBottom - Private->HobList.HandoffInformationTable->EfiMemoryBottom);
 | 
				
			||||||
 | 
					                ASSERT (BaseOfNewHeap + HeapTemporaryRamSize <= Private->FreePhysicalMemoryTop);
 | 
				
			||||||
 | 
					                CopyMem ((UINT8 *) (UINTN) BaseOfNewHeap, (UINT8 *) PeiTemporaryRamBase, HeapTemporaryRamSize);
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                //
 | 
					                //
 | 
				
			||||||
                // Migrate Stack
 | 
					                // Migrate Stack
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user