Size = Size + sizeof (MEMORY_PROFILE_ALLOC_INFO);\r
Data = AllocateZeroPool ((UINTN) Size);\r
if (Data == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
Print (L"UefiMemoryProfile: AllocateZeroPool (0x%x) - %r\n", Size, Status);\r
return Status;\r
}\r
{\r
EFI_STATUS Status;\r
UINTN CommSize;\r
- UINT8 CommBuffer[sizeof (EFI_GUID) + sizeof (UINTN) + sizeof (SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA)];\r
+ UINT8 *CommBuffer;\r
EFI_SMM_COMMUNICATE_HEADER *CommHeader;\r
SMRAM_PROFILE_PARAMETER_GET_PROFILE_INFO *CommGetProfileInfo;\r
SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA *CommGetProfileData;\r
return Status;\r
}\r
\r
+ CommSize = sizeof (EFI_GUID) + sizeof (UINTN) + sizeof (SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA);\r
+ CommBuffer = AllocateZeroPool (CommSize);\r
+ if (CommBuffer == NULL) {\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ Print (L"SmramProfile: AllocateZeroPool (0x%x) for comm buffer - %r\n", CommSize, Status);\r
+ return Status;\r
+ }\r
+\r
//\r
// Get Size\r
//\r
CommSize = sizeof (EFI_GUID) + sizeof (UINTN) + CommHeader->MessageLength;\r
Status = SmmCommunication->Communicate (SmmCommunication, CommBuffer, &CommSize);\r
if (EFI_ERROR (Status)) {\r
+ FreePool (CommBuffer);\r
DEBUG ((EFI_D_ERROR, "SmramProfile: SmmCommunication - %r\n", Status));\r
return Status;\r
}\r
//\r
ProfileBuffer = (PHYSICAL_ADDRESS) (UINTN) AllocateZeroPool ((UINTN) ProfileSize);\r
if (ProfileBuffer == 0) {\r
- Print (L"UefiMemoryProfile: AllocateZeroPool (0x%x) - %r\n", (UINTN) ProfileSize, Status);\r
- return EFI_SUCCESS;\r
+ FreePool (CommBuffer);\r
+ Status = EFI_OUT_OF_RESOURCES;\r
+ Print (L"SmramProfile: AllocateZeroPool (0x%x) for profile buffer - %r\n", (UINTN) ProfileSize, Status);\r
+ return Status;\r
}\r
\r
CommHeader = (EFI_SMM_COMMUNICATE_HEADER *) &CommBuffer[0];\r
CopyMem (&CommHeader->HeaderGuid, &gEdkiiMemoryProfileGuid, sizeof(gEdkiiMemoryProfileGuid));\r
CommHeader->MessageLength = sizeof (SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA);\r
\r
- CommGetProfileData = (SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA *)&CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data)];\r
+ CommGetProfileData = (SMRAM_PROFILE_PARAMETER_GET_PROFILE_DATA *) &CommBuffer[OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data)];\r
CommGetProfileData->Header.Command = SMRAM_PROFILE_COMMAND_GET_PROFILE_DATA;\r
CommGetProfileData->Header.DataLength = sizeof (*CommGetProfileData);\r
CommGetProfileData->Header.ReturnStatus = (UINT64)-1;\r
ASSERT_EFI_ERROR (Status);\r
\r
if (CommGetProfileData->Header.ReturnStatus != 0) {\r
+ FreePool ((VOID *) (UINTN) CommGetProfileData->ProfileBuffer);\r
+ FreePool (CommBuffer);\r
Print (L"GetProfileData - 0x%x\n", CommGetProfileData->Header.ReturnStatus);\r
return EFI_SUCCESS;\r
}\r
Print (L"======= SmramProfile end =======\n\n\n");\r
\r
FreePool ((VOID *) (UINTN) CommGetProfileData->ProfileBuffer);\r
+ FreePool (CommBuffer);\r
\r
return EFI_SUCCESS;\r
}\r