]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
MdeModulePkg/Variable/RuntimeDxe: Fix return status from Reclaim()
[mirror_edk2.git] / MdeModulePkg / Universal / Variable / RuntimeDxe / Variable.c
index 1e71fc642c763571a493ca0cd28e73f6ed5c6186..41f8ff4ceb6c7d5ece192ef24f425d112e0cad7a 100644 (file)
@@ -531,6 +531,7 @@ Reclaim (
   VOID                  *Point1;\r
   BOOLEAN               FoundAdded;\r
   EFI_STATUS            Status;\r
+  EFI_STATUS            DoneStatus;\r
   UINTN                 CommonVariableTotalSize;\r
   UINTN                 CommonUserVariableTotalSize;\r
   UINTN                 HwErrVariableTotalSize;\r
@@ -774,25 +775,30 @@ Reclaim (
   }\r
 \r
 Done:\r
+  DoneStatus = EFI_SUCCESS;\r
   if (IsVolatile || mVariableModuleGlobal->VariableGlobal.EmuNvMode) {\r
-    Status =  SynchronizeRuntimeVariableCache (\r
-                &mVariableModuleGlobal->VariableGlobal.VariableRuntimeCacheContext.VariableRuntimeVolatileCache,\r
-                0,\r
-                VariableStoreHeader->Size\r
-                );\r
-    ASSERT_EFI_ERROR (Status);\r
+    DoneStatus = SynchronizeRuntimeVariableCache (\r
+                   &mVariableModuleGlobal->VariableGlobal.VariableRuntimeCacheContext.VariableRuntimeVolatileCache,\r
+                   0,\r
+                   VariableStoreHeader->Size\r
+                   );\r
+    ASSERT_EFI_ERROR (DoneStatus);\r
     FreePool (ValidBuffer);\r
   } else {\r
     //\r
     // For NV variable reclaim, we use mNvVariableCache as the buffer, so copy the data back.\r
     //\r
     CopyMem (mNvVariableCache, (UINT8 *) (UINTN) VariableBase, VariableStoreHeader->Size);\r
-    Status =  SynchronizeRuntimeVariableCache (\r
-                &mVariableModuleGlobal->VariableGlobal.VariableRuntimeCacheContext.VariableRuntimeNvCache,\r
-                0,\r
-                VariableStoreHeader->Size\r
-                );\r
-    ASSERT_EFI_ERROR (Status);\r
+    DoneStatus = SynchronizeRuntimeVariableCache (\r
+                   &mVariableModuleGlobal->VariableGlobal.VariableRuntimeCacheContext.VariableRuntimeNvCache,\r
+                   0,\r
+                   VariableStoreHeader->Size\r
+                   );\r
+    ASSERT_EFI_ERROR (DoneStatus);\r
+  }\r
+\r
+  if (!EFI_ERROR (Status) && EFI_ERROR (DoneStatus)) {\r
+    Status = DoneStatus;\r
   }\r
 \r
   return Status;\r