]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.c
MdeModulePkg/Variable: Fix volatile variable RT cache update logic
[mirror_edk2.git] / MdeModulePkg / Universal / Variable / RuntimeDxe / Variable.c
index 29d6aca993805adcdb56f728e49b4afa56a7bb51..b0ee5e50d005deed3b175b5d6a524bfe7232741d 100644 (file)
@@ -2296,10 +2296,10 @@ UpdateVariable (
 \r
 Done:\r
   if (!EFI_ERROR (Status)) {\r
-    if (Variable->Volatile) {\r
-      VolatileCacheInstance = &(mVariableModuleGlobal->VariableGlobal.VariableRuntimeCacheContext.VariableRuntimeVolatileCache);\r
-    } else {\r
+    if ((Variable->CurrPtr != NULL && !Variable->Volatile) || (Attributes & EFI_VARIABLE_NON_VOLATILE) != 0) {\r
       VolatileCacheInstance = &(mVariableModuleGlobal->VariableGlobal.VariableRuntimeCacheContext.VariableRuntimeNvCache);\r
+    } else {\r
+      VolatileCacheInstance = &(mVariableModuleGlobal->VariableGlobal.VariableRuntimeCacheContext.VariableRuntimeVolatileCache);\r
     }\r
 \r
     if (VolatileCacheInstance->Store != NULL) {\r