From d69a7bc71207e4e607cfbde652d63adad7c0bd2d Mon Sep 17 00:00:00 2001 From: lzeng14 Date: Mon, 18 Jun 2012 01:34:27 +0000 Subject: Fix potential memory leak issue. Signed-off-by: Star Zeng Reviewed-by: Liming Gao git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13458 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceSmm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'MdeModulePkg') diff --git a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceSmm.c b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceSmm.c index 6de22d4a1c..771c7f95d9 100644 --- a/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceSmm.c +++ b/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableSmm/FirmwarePerformanceSmm.c @@ -101,14 +101,15 @@ FpdtStatusCodeListenerSmm ( // Try to allocate big SMRAM data to store Boot record. // if (mSmramIsOutOfResource) { + ReleaseSpinLock (&mSmmFpdtLock); return EFI_OUT_OF_RESOURCES; } - NewRecordBuffer = AllocatePool (mBootRecordSize + Data->Size + EXTENSION_RECORD_SIZE); + NewRecordBuffer = ReallocatePool (mBootRecordSize, mBootRecordSize + Data->Size + EXTENSION_RECORD_SIZE, mBootRecordBuffer); if (NewRecordBuffer == NULL) { + ReleaseSpinLock (&mSmmFpdtLock); mSmramIsOutOfResource = TRUE; return EFI_OUT_OF_RESOURCES; } - CopyMem (NewRecordBuffer, mBootRecordBuffer, mBootRecordSize); mBootRecordBuffer = NewRecordBuffer; mBootRecordMaxSize = mBootRecordSize + Data->Size + EXTENSION_RECORD_SIZE; } -- cgit v1.2.3