diff options
| author | kx <kx@radix.pro> | 2024-06-04 06:43:08 +0300 |
|---|---|---|
| committer | kx <kx@radix.pro> | 2024-06-04 06:43:08 +0300 |
| commit | 7e2ccccace24636f29ddc210b94606abd4c7e42b (patch) | |
| tree | 545d43ea12671048956cafeb12303e84d601e571 /MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | |
| parent | 27b044605cd5f6b33a3d231576003850b3fe305b (diff) | |
| download | edk2-trunk.tar.xz | |
Renormalized end-of-lines from master@27b044605cd5f6b33a3d231576003850b3fe305btrunk
Diffstat (limited to 'MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c')
| -rw-r--r-- | MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c | 192 |
1 files changed, 96 insertions, 96 deletions
diff --git a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c index f6bb7284f0..418fc3ee45 100644 --- a/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c +++ b/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableLockRequestToLock.c @@ -1,96 +1,96 @@ -/** @file
- Temporary location of the RequestToLock shim code while projects
- are moved to VariablePolicy. Should be removed when deprecated.
-
- Copyright (c) Microsoft Corporation.
- SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#include <Uefi.h>
-#include <Library/DebugLib.h>
-#include <Library/MemoryAllocationLib.h>
-#include <Library/VariablePolicyLib.h>
-#include <Library/VariablePolicyHelperLib.h>
-#include <Protocol/VariableLock.h>
-
-/**
- DEPRECATED. THIS IS ONLY HERE AS A CONVENIENCE WHILE PORTING.
- Mark a variable that will become read-only after leaving the DXE phase of
- execution. Write request coming from SMM environment through
- EFI_SMM_VARIABLE_PROTOCOL is allowed.
-
- @param[in] This The VARIABLE_LOCK_PROTOCOL instance.
- @param[in] VariableName A pointer to the variable name that will be made
- read-only subsequently.
- @param[in] VendorGuid A pointer to the vendor GUID that will be made
- read-only subsequently.
-
- @retval EFI_SUCCESS The variable specified by the VariableName and
- the VendorGuid was marked as pending to be
- read-only.
- @retval EFI_INVALID_PARAMETER VariableName or VendorGuid is NULL.
- Or VariableName is an empty string.
- @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or
- EFI_EVENT_GROUP_READY_TO_BOOT has already been
- signaled.
- @retval EFI_OUT_OF_RESOURCES There is not enough resource to hold the lock
- request.
-**/
-EFI_STATUS
-EFIAPI
-VariableLockRequestToLock (
- IN CONST EDKII_VARIABLE_LOCK_PROTOCOL *This,
- IN CHAR16 *VariableName,
- IN EFI_GUID *VendorGuid
- )
-{
- EFI_STATUS Status;
- VARIABLE_POLICY_ENTRY *NewPolicy;
-
- DEBUG ((DEBUG_WARN, "!!! DEPRECATED INTERFACE !!! %a() will go away soon!\n", __func__));
- DEBUG ((DEBUG_WARN, "!!! DEPRECATED INTERFACE !!! Please move to use Variable Policy!\n"));
- DEBUG ((DEBUG_WARN, "!!! DEPRECATED INTERFACE !!! Variable: %g %s\n", VendorGuid, VariableName));
-
- NewPolicy = NULL;
- Status = CreateBasicVariablePolicy (
- VendorGuid,
- VariableName,
- VARIABLE_POLICY_NO_MIN_SIZE,
- VARIABLE_POLICY_NO_MAX_SIZE,
- VARIABLE_POLICY_NO_MUST_ATTR,
- VARIABLE_POLICY_NO_CANT_ATTR,
- VARIABLE_POLICY_TYPE_LOCK_NOW,
- &NewPolicy
- );
- if (!EFI_ERROR (Status)) {
- Status = RegisterVariablePolicy (NewPolicy);
-
- //
- // If the error returned is EFI_ALREADY_STARTED, we need to check the
- // current database for the variable and see whether it's locked. If it's
- // locked, we're still fine, but also generate a DEBUG_WARN message so the
- // duplicate lock can be removed.
- //
- if (Status == EFI_ALREADY_STARTED) {
- Status = ValidateSetVariable (VariableName, VendorGuid, 0, 0, NULL);
- if (Status == EFI_WRITE_PROTECTED) {
- DEBUG ((DEBUG_WARN, " Variable: %g %s is already locked!\n", VendorGuid, VariableName));
- Status = EFI_SUCCESS;
- } else {
- DEBUG ((DEBUG_ERROR, " Variable: %g %s can not be locked!\n", VendorGuid, VariableName));
- Status = EFI_ACCESS_DENIED;
- }
- }
- }
-
- if (EFI_ERROR (Status)) {
- DEBUG ((DEBUG_ERROR, "%a - Failed to lock variable %s! %r\n", __func__, VariableName, Status));
- }
-
- if (NewPolicy != NULL) {
- FreePool (NewPolicy);
- }
-
- return Status;
-}
+/** @file + Temporary location of the RequestToLock shim code while projects + are moved to VariablePolicy. Should be removed when deprecated. + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include <Uefi.h> +#include <Library/DebugLib.h> +#include <Library/MemoryAllocationLib.h> +#include <Library/VariablePolicyLib.h> +#include <Library/VariablePolicyHelperLib.h> +#include <Protocol/VariableLock.h> + +/** + DEPRECATED. THIS IS ONLY HERE AS A CONVENIENCE WHILE PORTING. + Mark a variable that will become read-only after leaving the DXE phase of + execution. Write request coming from SMM environment through + EFI_SMM_VARIABLE_PROTOCOL is allowed. + + @param[in] This The VARIABLE_LOCK_PROTOCOL instance. + @param[in] VariableName A pointer to the variable name that will be made + read-only subsequently. + @param[in] VendorGuid A pointer to the vendor GUID that will be made + read-only subsequently. + + @retval EFI_SUCCESS The variable specified by the VariableName and + the VendorGuid was marked as pending to be + read-only. + @retval EFI_INVALID_PARAMETER VariableName or VendorGuid is NULL. + Or VariableName is an empty string. + @retval EFI_ACCESS_DENIED EFI_END_OF_DXE_EVENT_GROUP_GUID or + EFI_EVENT_GROUP_READY_TO_BOOT has already been + signaled. + @retval EFI_OUT_OF_RESOURCES There is not enough resource to hold the lock + request. +**/ +EFI_STATUS +EFIAPI +VariableLockRequestToLock ( + IN CONST EDKII_VARIABLE_LOCK_PROTOCOL *This, + IN CHAR16 *VariableName, + IN EFI_GUID *VendorGuid + ) +{ + EFI_STATUS Status; + VARIABLE_POLICY_ENTRY *NewPolicy; + + DEBUG ((DEBUG_WARN, "!!! DEPRECATED INTERFACE !!! %a() will go away soon!\n", __func__)); + DEBUG ((DEBUG_WARN, "!!! DEPRECATED INTERFACE !!! Please move to use Variable Policy!\n")); + DEBUG ((DEBUG_WARN, "!!! DEPRECATED INTERFACE !!! Variable: %g %s\n", VendorGuid, VariableName)); + + NewPolicy = NULL; + Status = CreateBasicVariablePolicy ( + VendorGuid, + VariableName, + VARIABLE_POLICY_NO_MIN_SIZE, + VARIABLE_POLICY_NO_MAX_SIZE, + VARIABLE_POLICY_NO_MUST_ATTR, + VARIABLE_POLICY_NO_CANT_ATTR, + VARIABLE_POLICY_TYPE_LOCK_NOW, + &NewPolicy + ); + if (!EFI_ERROR (Status)) { + Status = RegisterVariablePolicy (NewPolicy); + + // + // If the error returned is EFI_ALREADY_STARTED, we need to check the + // current database for the variable and see whether it's locked. If it's + // locked, we're still fine, but also generate a DEBUG_WARN message so the + // duplicate lock can be removed. + // + if (Status == EFI_ALREADY_STARTED) { + Status = ValidateSetVariable (VariableName, VendorGuid, 0, 0, NULL); + if (Status == EFI_WRITE_PROTECTED) { + DEBUG ((DEBUG_WARN, " Variable: %g %s is already locked!\n", VendorGuid, VariableName)); + Status = EFI_SUCCESS; + } else { + DEBUG ((DEBUG_ERROR, " Variable: %g %s can not be locked!\n", VendorGuid, VariableName)); + Status = EFI_ACCESS_DENIED; + } + } + } + + if (EFI_ERROR (Status)) { + DEBUG ((DEBUG_ERROR, "%a - Failed to lock variable %s! %r\n", __func__, VariableName, Status)); + } + + if (NewPolicy != NULL) { + FreePool (NewPolicy); + } + + return Status; +} |
