]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/SerializeVariablesLib/SerializeVariablesLib.c
OvmfPkg/SerializeVariablesLib: ignore secure variable restore errors
[mirror_edk2.git] / OvmfPkg / Library / SerializeVariablesLib / SerializeVariablesLib.c
index 112f20e052f1772b90bd6d383c094881082e8c38..19569b2ae0eac711f82a94795f4ed2c28b712143 100644 (file)
@@ -284,13 +284,26 @@ IterateVariablesCallbackSetSystemVariable (
   IN  VOID                         *Data
   )
 {
-  return gRT->SetVariable (
-           VariableName,
-           VendorGuid,
-           Attributes,
-           DataSize,
-           Data
-           );
+  EFI_STATUS          Status;\r
+  STATIC CONST UINT32 AuthMask =\r
+                        EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS |\r
+                        EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS;\r
+\r
+  Status = gRT->SetVariable (\r
+             VariableName,\r
+             VendorGuid,\r
+             Attributes,\r
+             DataSize,\r
+             Data\r
+             );\r
+\r
+  if (Status == EFI_SECURITY_VIOLATION && (Attributes & AuthMask) != 0) {\r
+    DEBUG ((DEBUG_WARN, "%a: setting authenticated variable \"%s\" "\r
+            "failed with EFI_SECURITY_VIOLATION, ignoring\n", __FUNCTION__,\r
+            VariableName));\r
+    Status = EFI_SUCCESS;\r
+  }\r
+  return Status;\r
 }