mirror of https://github.com/acidanthera/audk.git
MdeModulePkg Variable: Enhance the code logic about VariableLock
to just return EFI_SUCCESS if the variable has been in the locked list. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17141 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
27a0a8bc0e
commit
e56e187044
|
@ -2418,6 +2418,8 @@ VariableLockRequestToLock (
|
|||
{
|
||||
VARIABLE_ENTRY *Entry;
|
||||
CHAR16 *Name;
|
||||
LIST_ENTRY *Link;
|
||||
VARIABLE_ENTRY *LockedEntry;
|
||||
|
||||
if (VariableName == NULL || VariableName[0] == 0 || VendorGuid == NULL) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
|
@ -2436,11 +2438,23 @@ VariableLockRequestToLock (
|
|||
|
||||
AcquireLockOnlyAtBootTime(&mVariableModuleGlobal->VariableGlobal.VariableServicesLock);
|
||||
|
||||
for ( Link = GetFirstNode (&mLockedVariableList)
|
||||
; !IsNull (&mLockedVariableList, Link)
|
||||
; Link = GetNextNode (&mLockedVariableList, Link)
|
||||
) {
|
||||
LockedEntry = BASE_CR (Link, VARIABLE_ENTRY, Link);
|
||||
Name = (CHAR16 *) ((UINTN) LockedEntry + sizeof (*LockedEntry));
|
||||
if (CompareGuid (&LockedEntry->Guid, VendorGuid) && (StrCmp (Name, VariableName) == 0)) {
|
||||
goto Done;
|
||||
}
|
||||
}
|
||||
|
||||
Name = (CHAR16 *) ((UINTN) Entry + sizeof (*Entry));
|
||||
StrnCpy (Name, VariableName, StrLen (VariableName));
|
||||
CopyGuid (&Entry->Guid, VendorGuid);
|
||||
InsertTailList (&mLockedVariableList, &Entry->Link);
|
||||
|
||||
Done:
|
||||
ReleaseLockOnlyAtBootTime (&mVariableModuleGlobal->VariableGlobal.VariableServicesLock);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
|
|
Loading…
Reference in New Issue