]> git.proxmox.com Git - mirror_edk2.git/commitdiff
MdeModulePkg DxeCore/PiSmmCore/MemoryProfileInfo: Fix EBC and VS2013 build failure.
authorStar Zeng <star.zeng@intel.com>
Mon, 17 Nov 2014 02:30:44 +0000 (02:30 +0000)
committerlzeng14 <lzeng14@Edk2>
Mon, 17 Nov 2014 02:30:44 +0000 (02:30 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16396 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Application/MemoryProfileInfo/MemoryProfileInfo.c
MdeModulePkg/Core/Dxe/Mem/MemoryProfileRecord.c
MdeModulePkg/Core/PiSmmCore/SmramProfileRecord.c

index 4896ebd1ff0bedd1fda747a046a2a48e9cc8b8f5..084b069fb8a70c4c57900213d2ed98d09e3e0dab 100644 (file)
@@ -557,6 +557,7 @@ GetUefiMemoryProfileData (
   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
@@ -597,7 +598,7 @@ GetSmramProfileData (
 {\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
@@ -611,6 +612,14 @@ GetSmramProfileData (
     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
@@ -627,6 +636,7 @@ GetSmramProfileData (
   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
@@ -643,15 +653,17 @@ GetSmramProfileData (
   //\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
@@ -663,6 +675,8 @@ GetSmramProfileData (
   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
@@ -674,6 +688,7 @@ GetSmramProfileData (
   Print (L"======= SmramProfile end =======\n\n\n");\r
 \r
   FreePool ((VOID *) (UINTN) CommGetProfileData->ProfileBuffer);\r
+  FreePool (CommBuffer);\r
 \r
   return EFI_SUCCESS;\r
 }\r
index 1602fdb8e10746caa5664af9c2733371f5562236..dca0008f75aeec5f32b39fe7d2176b02f4d573ac 100644 (file)
@@ -817,6 +817,8 @@ CoreUpdateProfileAllocate (
   MEMORY_PROFILE_ALLOC_INFO_DATA    *AllocInfoData;\r
   EFI_MEMORY_TYPE                   ProfileMemoryIndex;\r
 \r
+  AllocInfoData = NULL;\r
+\r
   ContextData = GetMemoryProfileContext ();\r
   if (ContextData == NULL) {\r
     return FALSE;\r
index 24ab1b1de4ed3903d65645c097e86439e43cc632..e119fadb67e5cd3669972e226bf104dd5f29f54f 100644 (file)
@@ -824,6 +824,8 @@ SmmCoreUpdateProfileAllocate (
   MEMORY_PROFILE_ALLOC_INFO_DATA    *AllocInfoData;\r
   EFI_MEMORY_TYPE                   ProfileMemoryIndex;\r
 \r
+  AllocInfoData = NULL;\r
+\r
   ContextData = GetSmramProfileContext ();\r
   if (ContextData == NULL) {\r
     return FALSE;\r