summaryrefslogtreecommitdiff
path: root/EdkModulePkg/Universal/Variable
diff options
context:
space:
mode:
authorvanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2007-03-29 06:58:38 +0000
committervanjeff <vanjeff@6f19259b-4bc3-4df7-8a09-765794883524>2007-03-29 06:58:38 +0000
commitc8dd259d6174c01569f2a6da7243d74d727b2678 (patch)
tree1f861a814a64b6a1960135563d3de20bc36cc32b /EdkModulePkg/Universal/Variable
parentcb360b2656f4ca06b0b216dd7b9933312abeb786 (diff)
downloadedk2-platforms-c8dd259d6174c01569f2a6da7243d74d727b2678.tar.xz
1. Use MemoryAllocationLib to replace boot services memory services functions in EdkModulePkg.
2. Added NULL pointer check before calling FreePool () to fix bugs when free memory. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2513 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EdkModulePkg/Universal/Variable')
-rw-r--r--EdkModulePkg/Universal/Variable/RuntimeDxe/Variable.c56
-rw-r--r--EdkModulePkg/Universal/Variable/RuntimeDxe/Variable.msa3
-rw-r--r--EdkModulePkg/Universal/Variable/RuntimeDxe/VariableIpf.msa3
-rw-r--r--EdkModulePkg/Universal/Variable/RuntimeDxe/reclaim.c28
4 files changed, 41 insertions, 49 deletions
diff --git a/EdkModulePkg/Universal/Variable/RuntimeDxe/Variable.c b/EdkModulePkg/Universal/Variable/RuntimeDxe/Variable.c
index 98137c6a3f..e224558651 100644
--- a/EdkModulePkg/Universal/Variable/RuntimeDxe/Variable.c
+++ b/EdkModulePkg/Universal/Variable/RuntimeDxe/Variable.c
@@ -424,13 +424,9 @@ Returns:
Variable = NextVariable;
}
- Status = gBS->AllocatePool (
- EfiBootServicesData,
- ValidBufferSize,
- (VOID **) &ValidBuffer
- );
- if (EFI_ERROR (Status)) {
- return Status;
+ ValidBuffer = AllocatePool (ValidBufferSize);
+ if (ValidBuffer == NULL) {
+ return EFI_OUT_OF_RESOURCES;
}
SetMem (ValidBuffer, ValidBufferSize, 0xff);
@@ -481,7 +477,7 @@ Returns:
}
}
- gBS->FreePool (ValidBuffer);
+ FreePool (ValidBuffer);
if (EFI_ERROR (Status)) {
*LastVariableOffset = 0;
@@ -1253,13 +1249,13 @@ Returns:
*RemainingVariableStorageSize -= VariableSize;
}
}
-
+
//
// Go to the next one
//
Variable = NextVariable;
}
-
+
ReleaseLockOnlyAtBootTime (&Global->VariableServicesLock);
return EFI_SUCCESS;
}
@@ -1308,14 +1304,9 @@ Returns:
UINTN Index;
UINT8 Data;
- Status = gBS->AllocatePool (
- EfiRuntimeServicesData,
- sizeof (ESAL_VARIABLE_GLOBAL),
- (VOID **) &mVariableModuleGlobal
- );
-
- if (EFI_ERROR (Status)) {
- return Status;
+ mVariableModuleGlobal = AllocateRuntimePool (sizeof (ESAL_VARIABLE_GLOBAL));
+ if (mVariableModuleGlobal == NULL) {
+ return EFI_OUT_OF_RESOURCES;
}
EfiInitializeLock(&mVariableModuleGlobal->VariableGlobal[Physical].VariableServicesLock, EFI_TPL_NOTIFY);
@@ -1323,15 +1314,10 @@ Returns:
//
// Allocate memory for volatile variable store
//
- Status = gBS->AllocatePool (
- EfiRuntimeServicesData,
- VARIABLE_STORE_SIZE + SCRATCH_SIZE,
- (VOID **) &VolatileVariableStore
- );
-
- if (EFI_ERROR (Status)) {
- gBS->FreePool (mVariableModuleGlobal);
- return Status;
+ VolatileVariableStore = AllocateRuntimePool (VARIABLE_STORE_SIZE + SCRATCH_SIZE);
+ if (VolatileVariableStore == NULL) {
+ FreePool (mVariableModuleGlobal);
+ return EFI_OUT_OF_RESOURCES;
}
SetMem (VolatileVariableStore, VARIABLE_STORE_SIZE + SCRATCH_SIZE, 0xff);
@@ -1367,8 +1353,8 @@ Returns:
Status = gDS->GetMemorySpaceDescriptor (BaseAddress, &GcdDescriptor);
if (EFI_ERROR (Status)) {
- gBS->FreePool (mVariableModuleGlobal);
- gBS->FreePool (VolatileVariableStore);
+ FreePool (mVariableModuleGlobal);
+ FreePool (VolatileVariableStore);
return EFI_UNSUPPORTED;
}
@@ -1378,8 +1364,8 @@ Returns:
GcdDescriptor.Attributes | EFI_MEMORY_RUNTIME
);
if (EFI_ERROR (Status)) {
- gBS->FreePool (mVariableModuleGlobal);
- gBS->FreePool (VolatileVariableStore);
+ FreePool (mVariableModuleGlobal);
+ FreePool (VolatileVariableStore);
return EFI_UNSUPPORTED;
}
//
@@ -1448,8 +1434,8 @@ Returns:
}
if (EFI_ERROR (Status)) {
- gBS->FreePool (mVariableModuleGlobal);
- gBS->FreePool (VolatileVariableStore);
+ FreePool (mVariableModuleGlobal);
+ FreePool (VolatileVariableStore);
return Status;
}
@@ -1473,8 +1459,8 @@ Returns:
}
if (EFI_ERROR (Status)) {
- gBS->FreePool (mVariableModuleGlobal);
- gBS->FreePool (VolatileVariableStore);
+ FreePool (mVariableModuleGlobal);
+ FreePool (VolatileVariableStore);
}
return Status;
diff --git a/EdkModulePkg/Universal/Variable/RuntimeDxe/Variable.msa b/EdkModulePkg/Universal/Variable/RuntimeDxe/Variable.msa
index d1e6f3bb93..3607bc4f7f 100644
--- a/EdkModulePkg/Universal/Variable/RuntimeDxe/Variable.msa
+++ b/EdkModulePkg/Universal/Variable/RuntimeDxe/Variable.msa
@@ -52,6 +52,9 @@
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>BaseLib</Keyword>
</LibraryClass>
+ <LibraryClass Usage="ALWAYS_CONSUMED">
+ <Keyword>MemoryAllocationLib</Keyword>
+ </LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>Variable.h</Filename>
diff --git a/EdkModulePkg/Universal/Variable/RuntimeDxe/VariableIpf.msa b/EdkModulePkg/Universal/Variable/RuntimeDxe/VariableIpf.msa
index 11ca3086ba..564fc61e6e 100644
--- a/EdkModulePkg/Universal/Variable/RuntimeDxe/VariableIpf.msa
+++ b/EdkModulePkg/Universal/Variable/RuntimeDxe/VariableIpf.msa
@@ -55,6 +55,9 @@
<LibraryClass Usage="ALWAYS_CONSUMED">
<Keyword>BaseLib</Keyword>
</LibraryClass>
+ <LibraryClass Usage="ALWAYS_CONSUMED">
+ <Keyword>MemoryAllocationLib</Keyword>
+ </LibraryClass>
</LibraryClassDefinitions>
<SourceFiles>
<Filename>Variable.h</Filename>
diff --git a/EdkModulePkg/Universal/Variable/RuntimeDxe/reclaim.c b/EdkModulePkg/Universal/Variable/RuntimeDxe/reclaim.c
index 00ebcf84fd..4c7249046c 100644
--- a/EdkModulePkg/Universal/Variable/RuntimeDxe/reclaim.c
+++ b/EdkModulePkg/Universal/Variable/RuntimeDxe/reclaim.c
@@ -1,20 +1,20 @@
/*++
-Copyright (c) 2006, Intel Corporation
-All rights reserved. This program and the accompanying materials
-are licensed and made available under the terms and conditions of the BSD License
-which accompanies this distribution. The full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+Copyright (c) 2006 - 2007, Intel Corporation
+All rights reserved. This program and the accompanying materials
+are licensed and made available under the terms and conditions of the BSD License
+which accompanies this distribution. The full text of the license may be found at
+http://opensource.org/licenses/bsd-license.php
+
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Module Name:
reclaim.c
-
+
Abstract:
-
+
Handles non-volatile variable store garbage collection, using FTW
(Fault Tolerant Write) protocol.
@@ -82,7 +82,7 @@ GetFvbHandleByAddress (
}
}
- gBS->FreePool (HandleBuffer);
+ FreePool (HandleBuffer);
return Status;
}
@@ -216,8 +216,8 @@ Returns:
// Prepare for the variable data
//
FtwBufferSize = ((VARIABLE_STORE_HEADER *) ((UINTN) VariableBase))->Size;
- Status = gBS->AllocatePool (EfiRuntimeServicesData, FtwBufferSize, (VOID **) &FtwBuffer);
- if (EFI_ERROR (Status)) {
+ FtwBuffer = AllocateRuntimePool (FtwBufferSize);
+ if (FtwBuffer == NULL) {
return EFI_OUT_OF_RESOURCES;
}
@@ -236,6 +236,6 @@ Returns:
FtwBuffer
);
- gBS->FreePool (FtwBuffer);
+ FreePool (FtwBuffer);
return Status;
}