\r
#pragma pack(1)\r
typedef struct {\r
- EFI_GUID Guid;\r
- EFI_PHYSICAL_ADDRESS OrigAddress;\r
- EFI_PHYSICAL_ADDRESS CopyAddress;\r
- UINT32 Size;\r
- UINT64 Attributes;\r
+ EFI_GUID Guid;\r
+ EFI_PHYSICAL_ADDRESS OrigAddress;\r
+ EFI_PHYSICAL_ADDRESS CopyAddress;\r
+ UINT32 Size;\r
+ UINT64 Attributes;\r
} LOCK_BOX_ENTRY;\r
#pragma pack()\r
\r
-LOCK_BOX_GLOBAL *mLockBoxGlobal = NULL;\r
-STATIC LOCK_BOX_ENTRY *StartOfEntries = NULL;\r
-STATIC LOCK_BOX_ENTRY *EndOfEntries = NULL;\r
+LOCK_BOX_GLOBAL *mLockBoxGlobal = NULL;\r
+STATIC LOCK_BOX_ENTRY *StartOfEntries = NULL;\r
+STATIC LOCK_BOX_ENTRY *EndOfEntries = NULL;\r
\r
RETURN_STATUS\r
EFIAPI\r
VOID\r
)\r
{\r
- UINTN NumEntries;\r
+ UINTN NumEntries;\r
\r
ASSERT (!FeaturePcdGet (PcdSmmSmramRequire));\r
\r
return RETURN_UNSUPPORTED;\r
}\r
\r
- mLockBoxGlobal = (LOCK_BOX_GLOBAL *)(UINTN) PcdGet32 (PcdOvmfLockBoxStorageBase);\r
- StartOfEntries = ((LOCK_BOX_ENTRY *) (mLockBoxGlobal + 1));\r
- NumEntries = ((PcdGet32 (PcdOvmfLockBoxStorageSize) - sizeof (LOCK_BOX_GLOBAL)) /\r
- sizeof (LOCK_BOX_ENTRY));\r
+ mLockBoxGlobal = (LOCK_BOX_GLOBAL *)(UINTN)PcdGet32 (PcdOvmfLockBoxStorageBase);\r
+ StartOfEntries = ((LOCK_BOX_ENTRY *)(mLockBoxGlobal + 1));\r
+ NumEntries = ((PcdGet32 (PcdOvmfLockBoxStorageSize) - sizeof (LOCK_BOX_GLOBAL)) /\r
+ sizeof (LOCK_BOX_ENTRY));\r
EndOfEntries = StartOfEntries + NumEntries;\r
if (mLockBoxGlobal->Signature != LOCK_BOX_GLOBAL_SIGNATURE) {\r
//\r
//\r
mLockBoxGlobal->Signature = LOCK_BOX_GLOBAL_SIGNATURE;\r
}\r
+\r
return RETURN_SUCCESS;\r
}\r
\r
-\r
/**\r
Find LockBox entry based on GUID.\r
\r
LOCK_BOX_ENTRY *\r
EFIAPI\r
FindHeaderByGuid (\r
- IN CONST EFI_GUID *Guid\r
+ IN CONST EFI_GUID *Guid\r
)\r
{\r
- LOCK_BOX_ENTRY *Header;\r
+ LOCK_BOX_ENTRY *Header;\r
\r
for (Header = StartOfEntries; Header < EndOfEntries; Header++) {\r
- if (Header->Size == 0 || CompareGuid (Guid, &Header->Guid)) {\r
+ if ((Header->Size == 0) || CompareGuid (Guid, &Header->Guid)) {\r
return Header;\r
}\r
}\r
return NULL;\r
}\r
\r
-\r
/**\r
This function will save confidential information to lockbox.\r
\r
RETURN_STATUS\r
EFIAPI\r
SaveLockBox (\r
- IN GUID *Guid,\r
- IN VOID *Buffer,\r
- IN UINTN Length\r
+ IN GUID *Guid,\r
+ IN VOID *Buffer,\r
+ IN UINTN Length\r
)\r
{\r
- LOCK_BOX_ENTRY *Header;\r
+ LOCK_BOX_ENTRY *Header;\r
VOID *CopyBuffer;\r
\r
- DEBUG ((DEBUG_VERBOSE, "%a: Guid=%g Buffer=%p Length=0x%x\n", __FUNCTION__,\r
- Guid, Buffer, (UINT32) Length));\r
+ DEBUG ((\r
+ DEBUG_VERBOSE,\r
+ "%a: Guid=%g Buffer=%p Length=0x%x\n",\r
+ __FUNCTION__,\r
+ Guid,\r
+ Buffer,\r
+ (UINT32)Length\r
+ ));\r
\r
- if (Guid == NULL || Buffer == NULL || Length == 0) {\r
+ if ((Guid == NULL) || (Buffer == NULL) || (Length == 0)) {\r
return RETURN_INVALID_PARAMETER;\r
}\r
\r
// overwrite the current terminator header with new metadata\r
//\r
CopyGuid (&Header->Guid, Guid);\r
- Header->OrigAddress = (UINTN) Buffer;\r
- Header->CopyAddress = (UINTN) CopyBuffer;\r
- Header->Size = (UINT32) Length;\r
+ Header->OrigAddress = (UINTN)Buffer;\r
+ Header->CopyAddress = (UINTN)CopyBuffer;\r
+ Header->Size = (UINT32)Length;\r
Header->Attributes = 0;\r
\r
//\r
return RETURN_SUCCESS;\r
}\r
\r
-\r
/**\r
This function will set lockbox attributes.\r
\r
RETURN_STATUS\r
EFIAPI\r
SetLockBoxAttributes (\r
- IN GUID *Guid,\r
- IN UINT64 Attributes\r
+ IN GUID *Guid,\r
+ IN UINT64 Attributes\r
)\r
{\r
- LOCK_BOX_ENTRY *Header;\r
+ LOCK_BOX_ENTRY *Header;\r
\r
- DEBUG ((DEBUG_VERBOSE, "%a: Guid=%g Attributes=0x%Lx\n", __FUNCTION__, Guid,\r
- Attributes));\r
+ DEBUG ((\r
+ DEBUG_VERBOSE,\r
+ "%a: Guid=%g Attributes=0x%Lx\n",\r
+ __FUNCTION__,\r
+ Guid,\r
+ Attributes\r
+ ));\r
\r
if (Guid == NULL) {\r
return RETURN_INVALID_PARAMETER;\r
}\r
\r
Header = FindHeaderByGuid (Guid);\r
- if (!Header || Header->Size == 0) {\r
+ if (!Header || (Header->Size == 0)) {\r
return RETURN_NOT_FOUND;\r
}\r
+\r
Header->Attributes = Attributes;\r
\r
return RETURN_SUCCESS;\r
}\r
\r
-\r
/**\r
This function will update confidential information to lockbox.\r
\r
RETURN_STATUS\r
EFIAPI\r
UpdateLockBox (\r
- IN GUID *Guid,\r
- IN UINTN Offset,\r
- IN VOID *Buffer,\r
- IN UINTN Length\r
+ IN GUID *Guid,\r
+ IN UINTN Offset,\r
+ IN VOID *Buffer,\r
+ IN UINTN Length\r
)\r
{\r
- LOCK_BOX_ENTRY *Header;\r
-\r
- DEBUG ((DEBUG_VERBOSE, "%a: Guid=%g Offset=0x%x Length=0x%x\n", __FUNCTION__,\r
- Guid, (UINT32) Offset, (UINT32) Length));\r
-\r
- if (Guid == NULL || Buffer == NULL || Length == 0) {\r
+ LOCK_BOX_ENTRY *Header;\r
+\r
+ DEBUG ((\r
+ DEBUG_VERBOSE,\r
+ "%a: Guid=%g Offset=0x%x Length=0x%x\n",\r
+ __FUNCTION__,\r
+ Guid,\r
+ (UINT32)Offset,\r
+ (UINT32)Length\r
+ ));\r
+\r
+ if ((Guid == NULL) || (Buffer == NULL) || (Length == 0)) {\r
return RETURN_INVALID_PARAMETER;\r
}\r
\r
Header = FindHeaderByGuid (Guid);\r
- if (!Header || Header->Size == 0) {\r
+ if (!Header || (Header->Size == 0)) {\r
return RETURN_NOT_FOUND;\r
}\r
\r
- if (Header->Size < Offset ||\r
- Length > Header->Size - Offset) {\r
+ if ((Header->Size < Offset) ||\r
+ (Length > Header->Size - Offset))\r
+ {\r
return RETURN_BUFFER_TOO_SMALL;\r
}\r
\r
- CopyMem ((UINT8 *)(UINTN) (Header->CopyAddress) + Offset, Buffer, Length);\r
+ CopyMem ((UINT8 *)(UINTN)(Header->CopyAddress) + Offset, Buffer, Length);\r
\r
return RETURN_SUCCESS;\r
}\r
\r
-\r
/**\r
This function will restore confidential information from lockbox.\r
\r
RETURN_STATUS\r
EFIAPI\r
RestoreLockBox (\r
- IN GUID *Guid,\r
- IN VOID *Buffer OPTIONAL,\r
- IN OUT UINTN *Length OPTIONAL\r
+ IN GUID *Guid,\r
+ IN VOID *Buffer OPTIONAL,\r
+ IN OUT UINTN *Length OPTIONAL\r
)\r
{\r
- LOCK_BOX_ENTRY *Header;\r
+ LOCK_BOX_ENTRY *Header;\r
\r
- DEBUG ((DEBUG_VERBOSE, "%a: Guid=%g Buffer=%p\n", __FUNCTION__, Guid,\r
- Buffer));\r
+ DEBUG ((\r
+ DEBUG_VERBOSE,\r
+ "%a: Guid=%g Buffer=%p\n",\r
+ __FUNCTION__,\r
+ Guid,\r
+ Buffer\r
+ ));\r
\r
if ((Guid == NULL) ||\r
((Buffer == NULL) && (Length != NULL)) ||\r
- ((Buffer != NULL) && (Length == NULL))) {\r
+ ((Buffer != NULL) && (Length == NULL)))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
Header = FindHeaderByGuid (Guid);\r
- if (!Header || Header->Size == 0) {\r
+ if (!Header || (Header->Size == 0)) {\r
return RETURN_NOT_FOUND;\r
}\r
\r
if (!(Header->Attributes & LOCK_BOX_ATTRIBUTE_RESTORE_IN_PLACE)) {\r
return RETURN_WRITE_PROTECTED;\r
}\r
+\r
if (Header->OrigAddress + (Header->Size - 1) > MAX_ADDRESS) {\r
return RETURN_UNSUPPORTED;\r
}\r
- Buffer = (VOID *)(UINTN) Header->OrigAddress;\r
+\r
+ Buffer = (VOID *)(UINTN)Header->OrigAddress;\r
}\r
\r
//\r
*Length = Header->Size;\r
return EFI_BUFFER_TOO_SMALL;\r
}\r
+\r
*Length = Header->Size;\r
}\r
\r
- CopyMem (Buffer, (VOID*)(UINTN) Header->CopyAddress, Header->Size);\r
+ CopyMem (Buffer, (VOID *)(UINTN)Header->CopyAddress, Header->Size);\r
\r
return RETURN_SUCCESS;\r
}\r
\r
-\r
/**\r
This function will restore confidential information from all lockbox which\r
have RestoreInPlace attribute.\r
VOID\r
)\r
{\r
- LOCK_BOX_ENTRY *Header;\r
+ LOCK_BOX_ENTRY *Header;\r
\r
for (Header = StartOfEntries;\r
Header < EndOfEntries && Header->Size > 0;\r
- Header++) {\r
+ Header++)\r
+ {\r
if (Header->Attributes & LOCK_BOX_ATTRIBUTE_RESTORE_IN_PLACE) {\r
- VOID *Buffer;\r
+ VOID *Buffer;\r
\r
if (Header->OrigAddress + (Header->Size - 1) > MAX_ADDRESS) {\r
return RETURN_UNSUPPORTED;\r
}\r
- Buffer = (VOID *)(UINTN) Header->OrigAddress;\r
- CopyMem (Buffer, (VOID*)(UINTN)Header->CopyAddress, Header->Size);\r
- DEBUG ((DEBUG_VERBOSE, "%a: Guid=%g Buffer=%p\n", __FUNCTION__,\r
- &Header->Guid, Buffer));\r
+\r
+ Buffer = (VOID *)(UINTN)Header->OrigAddress;\r
+ CopyMem (Buffer, (VOID *)(UINTN)Header->CopyAddress, Header->Size);\r
+ DEBUG ((\r
+ DEBUG_VERBOSE,\r
+ "%a: Guid=%g Buffer=%p\n",\r
+ __FUNCTION__,\r
+ &Header->Guid,\r
+ Buffer\r
+ ));\r
}\r
}\r
+\r
return RETURN_SUCCESS;\r
}\r