]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Variable/RuntimeDxe/TcgMorLockSmm.c
MdeModulePkg: Change TCG MOR variables to use VariablePolicy
[mirror_edk2.git] / MdeModulePkg / Universal / Variable / RuntimeDxe / TcgMorLockSmm.c
index 085f82035f4b90fa0edefeee6753049c82eac250..ee37942a6b0c6795da61eb9feed9974cef7db26d 100644 (file)
@@ -19,7 +19,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include "Variable.h"\r
 \r
 #include <Protocol/VariablePolicy.h>\r
-\r
+#include <Library/VariablePolicyHelperLib.h>\r
 #include <Library/VariablePolicyLib.h>\r
 \r
 typedef struct {\r
@@ -422,6 +422,8 @@ MorLockInitAtEndOfDxe (
 {\r
   UINTN      MorSize;\r
   EFI_STATUS MorStatus;\r
+  EFI_STATUS              Status;\r
+  VARIABLE_POLICY_ENTRY   *NewPolicy;\r
 \r
   if (!mMorLockInitializationRequired) {\r
     //\r
@@ -494,11 +496,25 @@ MorLockInitAtEndOfDxe (
   // The MOR variable is absent; the platform firmware does not support it.\r
   // Lock the variable so that no other module may create it.\r
   //\r
-  VariableLockRequestToLock (\r
-    NULL,                                   // This\r
-    MEMORY_OVERWRITE_REQUEST_VARIABLE_NAME,\r
-    &gEfiMemoryOverwriteControlDataGuid\r
-    );\r
+  NewPolicy = NULL;\r
+  Status = CreateBasicVariablePolicy( &gEfiMemoryOverwriteControlDataGuid,\r
+                                      MEMORY_OVERWRITE_REQUEST_VARIABLE_NAME,\r
+                                      VARIABLE_POLICY_NO_MIN_SIZE,\r
+                                      VARIABLE_POLICY_NO_MAX_SIZE,\r
+                                      VARIABLE_POLICY_NO_MUST_ATTR,\r
+                                      VARIABLE_POLICY_NO_CANT_ATTR,\r
+                                      VARIABLE_POLICY_TYPE_LOCK_NOW,\r
+                                      &NewPolicy );\r
+  if (!EFI_ERROR( Status )) {\r
+    Status = RegisterVariablePolicy( NewPolicy );\r
+  }\r
+  if (EFI_ERROR( Status )) {\r
+    DEBUG(( DEBUG_ERROR, "%a - Failed to lock variable %s! %r\n", __FUNCTION__, MEMORY_OVERWRITE_REQUEST_VARIABLE_NAME, Status ));\r
+    ASSERT_EFI_ERROR( Status );\r
+  }\r
+  if (NewPolicy != NULL) {\r
+    FreePool( NewPolicy );\r
+  }\r
 \r
   //\r
   // Delete the MOR Control Lock variable too (should it exists for some\r
@@ -514,9 +530,23 @@ MorLockInitAtEndOfDxe (
     );\r
   mMorLockPassThru = FALSE;\r
 \r
-  VariableLockRequestToLock (\r
-    NULL,                                       // This\r
-    MEMORY_OVERWRITE_REQUEST_CONTROL_LOCK_NAME,\r
-    &gEfiMemoryOverwriteRequestControlLockGuid\r
-    );\r
+  NewPolicy = NULL;\r
+  Status = CreateBasicVariablePolicy( &gEfiMemoryOverwriteRequestControlLockGuid,\r
+                                      MEMORY_OVERWRITE_REQUEST_CONTROL_LOCK_NAME,\r
+                                      VARIABLE_POLICY_NO_MIN_SIZE,\r
+                                      VARIABLE_POLICY_NO_MAX_SIZE,\r
+                                      VARIABLE_POLICY_NO_MUST_ATTR,\r
+                                      VARIABLE_POLICY_NO_CANT_ATTR,\r
+                                      VARIABLE_POLICY_TYPE_LOCK_NOW,\r
+                                      &NewPolicy );\r
+  if (!EFI_ERROR( Status )) {\r
+    Status = RegisterVariablePolicy( NewPolicy );\r
+  }\r
+  if (EFI_ERROR( Status )) {\r
+    DEBUG(( DEBUG_ERROR, "%a - Failed to lock variable %s! %r\n", __FUNCTION__, MEMORY_OVERWRITE_REQUEST_CONTROL_LOCK_NAME, Status ));\r
+    ASSERT_EFI_ERROR( Status );\r
+  }\r
+  if (NewPolicy != NULL) {\r
+    FreePool( NewPolicy );\r
+  }\r
 }\r