From d4f397c0311d529e62ca3356bc6e92fb3fbdb1bc Mon Sep 17 00:00:00 2001 From: mikewuping Date: Mon, 30 Oct 2006 07:47:44 +0000 Subject: [PATCH] 1. In event.c, a function's name is not spelled correctly, a typo. 2. In Graphics.c, Memory Leak in Graphics Library, ConvertBmpToUgaBlt(). 3. In HobLib.c, PeiBuildHobModule and three other functions do not zero hob reserved data area according to HOB spec v0.9. 4. In statuscode.h, the number of definition of EFI_SW_PEIM_PC_CAPSULE_START is equal to EFI_SW_PEIM_PC_CAPSULE_LOAD. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1861 6f19259b-4bc3-4df7-8a09-765794883524 --- EdkModulePkg/Core/Dxe/Event/event.c | 4 ++-- .../Library/EdkGraphicsLib/Graphics.c | 9 ++++++- MdePkg/Include/Common/StatusCode.h | 2 +- MdePkg/Library/PeiHobLib/HobLib.c | 24 +++++++++++++++++++ 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/EdkModulePkg/Core/Dxe/Event/event.c b/EdkModulePkg/Core/Dxe/Event/event.c index ae6b0a849d..ade810c5c1 100644 --- a/EdkModulePkg/Core/Dxe/Event/event.c +++ b/EdkModulePkg/Core/Dxe/Event/event.c @@ -363,7 +363,7 @@ Returns: static VOID EFIAPI -EventNofitySignalAllNullEvent ( +EventNotifySignalAllNullEvent ( IN EFI_EVENT Event, IN VOID *Context ) @@ -426,7 +426,7 @@ Returns: // if (Type & EFI_EVENT_NOTIFY_SIGNAL_ALL) { Type &= ~EFI_EVENT_NOTIFY_SIGNAL_ALL; - Function = EventNofitySignalAllNullEvent; + Function = EventNotifySignalAllNullEvent; } // diff --git a/EdkModulePkg/Library/EdkGraphicsLib/Graphics.c b/EdkModulePkg/Library/EdkGraphicsLib/Graphics.c index 01c612abd3..52936e3c40 100644 --- a/EdkModulePkg/Library/EdkGraphicsLib/Graphics.c +++ b/EdkModulePkg/Library/EdkGraphicsLib/Graphics.c @@ -159,7 +159,8 @@ Returns: UINTN Height; UINTN Width; UINTN ImageIndex; - + BOOLEAN IsAllocated; + BmpHeader = (BMP_IMAGE_HEADER *) BmpImage; if (BmpHeader->CharB != 'B' || BmpHeader->CharM != 'M') { return EFI_UNSUPPORTED; @@ -182,12 +183,14 @@ Returns: ImageHeader = Image; BltBufferSize = BmpHeader->PixelWidth * BmpHeader->PixelHeight * sizeof (EFI_UGA_PIXEL); + IsAllocated = FALSE; if (*UgaBlt == NULL) { *UgaBltSize = BltBufferSize; *UgaBlt = AllocatePool (*UgaBltSize); if (*UgaBlt == NULL) { return EFI_OUT_OF_RESOURCES; } + IsAllocated = TRUE; } else { if (*UgaBltSize < BltBufferSize) { *UgaBltSize = BltBufferSize; @@ -256,6 +259,10 @@ Returns: break; default: + if (IsAllocated) { + gBS->FreePool (*UgaBlt); + *UgaBlt = NULL; + } return EFI_UNSUPPORTED; break; }; diff --git a/MdePkg/Include/Common/StatusCode.h b/MdePkg/Include/Common/StatusCode.h index 474ed106f8..03b0cfcc3d 100644 --- a/MdePkg/Include/Common/StatusCode.h +++ b/MdePkg/Include/Common/StatusCode.h @@ -595,7 +595,7 @@ typedef struct { // #define EFI_SW_PEIM_PC_RECOVERY_BEGIN (EFI_SUBCLASS_SPECIFIC | 0x00000000) #define EFI_SW_PEIM_PC_CAPSULE_LOAD (EFI_SUBCLASS_SPECIFIC | 0x00000001) -#define EFI_SW_PEIM_PC_CAPSULE_START (EFI_SUBCLASS_SPECIFIC | 0x00000001) +#define EFI_SW_PEIM_PC_CAPSULE_START (EFI_SUBCLASS_SPECIFIC | 0x00000002) #define EFI_SW_PEIM_PC_RECOVERY_USER (EFI_SUBCLASS_SPECIFIC | 0x00000003) #define EFI_SW_PEIM_PC_RECOVERY_AUTO (EFI_SUBCLASS_SPECIFIC | 0x00000004) diff --git a/MdePkg/Library/PeiHobLib/HobLib.c b/MdePkg/Library/PeiHobLib/HobLib.c index ce9f79f82c..60a0e8c5da 100644 --- a/MdePkg/Library/PeiHobLib/HobLib.c +++ b/MdePkg/Library/PeiHobLib/HobLib.c @@ -228,6 +228,11 @@ BuildModuleHob ( Hob->MemoryAllocationHeader.MemoryLength = ModuleLength; Hob->MemoryAllocationHeader.MemoryType = EfiBootServicesCode; + // + // Zero the reserved space to match HOB spec + // + ZeroMem (Hob->MemoryAllocationHeader.Reserved, sizeof (Hob->MemoryAllocationHeader.Reserved)); + CopyGuid (&Hob->ModuleName, ModuleName); Hob->EntryPoint = EntryPoint; } @@ -418,6 +423,11 @@ BuildCpuHob ( Hob->SizeOfMemorySpace = SizeOfMemorySpace; Hob->SizeOfIoSpace = SizeOfIoSpace; + + // + // Zero the reserved space to match HOB spec + // + ZeroMem (Hob->Reserved, sizeof (Hob->Reserved)); } /** @@ -447,6 +457,11 @@ BuildStackHob ( Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress; Hob->AllocDescriptor.MemoryLength = Length; Hob->AllocDescriptor.MemoryType = EfiConventionalMemory; + + // + // Zero the reserved space to match HOB spec + // + ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved)); } /** @@ -478,6 +493,11 @@ BuildBspStoreHob ( Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress; Hob->AllocDescriptor.MemoryLength = Length; Hob->AllocDescriptor.MemoryType = MemoryType; + + // + // Zero the reserved space to match HOB spec + // + ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved)); } /** @@ -509,4 +529,8 @@ BuildMemoryAllocationHob ( Hob->AllocDescriptor.MemoryBaseAddress = BaseAddress; Hob->AllocDescriptor.MemoryLength = Length; Hob->AllocDescriptor.MemoryType = MemoryType; + // + // Zero the reserved space to match HOB spec + // + ZeroMem (Hob->AllocDescriptor.Reserved, sizeof (Hob->AllocDescriptor.Reserved)); }