//\r
// Collect boot records from SMM drivers.\r
//\r
- SmmBootRecordCommBuffer = AllocateZeroPool (SMM_BOOT_RECORD_COMM_SIZE);\r
- ASSERT (SmmBootRecordCommBuffer != NULL);\r
- SmmCommData = NULL;\r
+ SmmBootRecordCommBuffer = NULL;\r
+ SmmCommData = NULL;\r
Status = gBS->LocateProtocol (&gEfiSmmCommunicationProtocolGuid, NULL, (VOID **) &Communication);\r
if (!EFI_ERROR (Status)) {\r
//\r
// Initialize communicate buffer \r
//\r
+ SmmBootRecordCommBuffer = AllocateZeroPool (SMM_BOOT_RECORD_COMM_SIZE);\r
+ ASSERT (SmmBootRecordCommBuffer != NULL);\r
SmmCommBufferHeader = (EFI_SMM_COMMUNICATE_HEADER*)SmmBootRecordCommBuffer;\r
SmmCommData = (SMM_BOOT_RECORD_COMMUNICATE*)SmmCommBufferHeader->Data;\r
ZeroMem((UINT8*)SmmCommData, sizeof(SMM_BOOT_RECORD_COMMUNICATE));\r
ASSERT_EFI_ERROR(SmmCommData->ReturnStatus);\r
}\r
}\r
- FreePool (SmmBootRecordCommBuffer);\r
\r
//\r
// Prepare memory for Boot Performance table.\r
if (SmmCommData != NULL && SmmCommData->BootRecordData != NULL) {\r
FreePool (SmmCommData->BootRecordData);\r
}\r
+ if (SmmBootRecordCommBuffer != NULL) {\r
+ FreePool (SmmBootRecordCommBuffer);\r
+ }\r
if (mAcpiS3PerformanceTable != NULL) {\r
FreePages (mAcpiS3PerformanceTable, EFI_SIZE_TO_PAGES (sizeof (S3_PERFORMANCE_TABLE)));\r
}\r
mAcpiBootPerformanceTable->Header.Length = (UINT32) (mAcpiBootPerformanceTable->Header.Length + SmmCommData->BootRecordSize);\r
BootPerformanceData = BootPerformanceData + SmmCommData->BootRecordSize;\r
}\r
+ if (SmmBootRecordCommBuffer != NULL) {\r
+ FreePool (SmmBootRecordCommBuffer);\r
+ }\r
+\r
//\r
// Save Boot Performance Table address to Variable for use in S4 resume.\r
//\r