Internal Function. Free a pool by specified PoolIndex.\r
\r
@param FreePoolHdr The pool to free.\r
+ @param PoolTail The pointer to the pool tail.\r
\r
@retval EFI_SUCCESS Pool successfully freed.\r
\r
**/\r
EFI_STATUS\r
InternalFreePoolByIndex (\r
- IN FREE_POOL_HEADER *FreePoolHdr\r
+ IN FREE_POOL_HEADER *FreePoolHdr,\r
+ IN POOL_TAIL *PoolTail\r
)\r
{\r
UINTN PoolIndex;\r
SMM_POOL_TYPE SmmPoolType;\r
- POOL_TAIL *PoolTail;\r
\r
ASSERT ((FreePoolHdr->Header.Size & (FreePoolHdr->Header.Size - 1)) == 0);\r
ASSERT (((UINTN)FreePoolHdr & (FreePoolHdr->Header.Size - 1)) == 0);\r
FreePoolHdr->Header.Signature = 0;\r
FreePoolHdr->Header.Available = TRUE;\r
FreePoolHdr->Header.Type = 0;\r
- PoolTail = HEAD_TO_TAIL(&FreePoolHdr->Header);\r
PoolTail->Signature = 0;\r
PoolTail->Size = 0;\r
ASSERT (PoolIndex < MAX_POOL_INDEX);\r
EFI_SIZE_TO_PAGES (FreePoolHdr->Header.Size)\r
);\r
}\r
- return InternalFreePoolByIndex (FreePoolHdr);\r
+ return InternalFreePoolByIndex (FreePoolHdr, PoolTail);\r
}\r
\r
/**\r