{\r
VARIABLE_ENTRY *Entry;\r
CHAR16 *Name;\r
+ LIST_ENTRY *Link;\r
+ VARIABLE_ENTRY *LockedEntry;\r
\r
if (VariableName == NULL || VariableName[0] == 0 || VendorGuid == NULL) {\r
return EFI_INVALID_PARAMETER;\r
\r
AcquireLockOnlyAtBootTime(&mVariableModuleGlobal->VariableGlobal.VariableServicesLock);\r
\r
+ for ( Link = GetFirstNode (&mLockedVariableList)\r
+ ; !IsNull (&mLockedVariableList, Link)\r
+ ; Link = GetNextNode (&mLockedVariableList, Link)\r
+ ) {\r
+ LockedEntry = BASE_CR (Link, VARIABLE_ENTRY, Link);\r
+ Name = (CHAR16 *) ((UINTN) LockedEntry + sizeof (*LockedEntry));\r
+ if (CompareGuid (&LockedEntry->Guid, VendorGuid) && (StrCmp (Name, VariableName) == 0)) {\r
+ goto Done;\r
+ }\r
+ }\r
+\r
Name = (CHAR16 *) ((UINTN) Entry + sizeof (*Entry));\r
StrnCpy (Name, VariableName, StrLen (VariableName));\r
CopyGuid (&Entry->Guid, VendorGuid);\r
InsertTailList (&mLockedVariableList, &Entry->Link);\r
\r
+Done:\r
ReleaseLockOnlyAtBootTime (&mVariableModuleGlobal->VariableGlobal.VariableServicesLock);\r
\r
return EFI_SUCCESS;\r