> -----Original Message----- > From: Kun Qin <kuqi...@gmail.com> > Sent: Friday, June 18, 2021 5:03 PM > To: devel@edk2.groups.io > Cc: Wang, Jian J <jian.j.w...@intel.com>; Wu, Hao A <hao.a...@intel.com>; > Dong, Eric <eric.d...@intel.com>; Ni, Ray <ray...@intel.com> > Subject: [PATCH v2 5/6] MdeModulePkg: SmmLockBoxDxeLib: Updated > MessageLength calculation > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3398 > > This change replaced the calculation of communication buffer size from > explicitly adding the size of each member with the OFFSET macro function. > This will make the structure field defition change transparent to > consumers. > > Cc: Jian J Wang <jian.j.w...@intel.com> > Cc: Hao A Wu <hao.a...@intel.com> > Cc: Eric Dong <eric.d...@intel.com> > Cc: Ray Ni <ray...@intel.com> > > Signed-off-by: Kun Qin <kuqi...@gmail.com> > --- > > Notes: > v2: > - Newly added in v2 > > MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.c | 23 > ++++++++++---------- > 1 file changed, 11 insertions(+), 12 deletions(-) > > diff --git a/MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.c > b/MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.c > index 2cbffe889e1f..66fbe4dd961c 100644 > --- a/MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.c > +++ b/MdeModulePkg/Library/SmmLockBoxLib/SmmLockBoxDxeLib.c > @@ -79,8 +79,7 @@ LockBoxGetSmmCommBuffer ( > return mLockBoxSmmCommBuffer; > } > > - MinimalSizeNeeded = sizeof (EFI_GUID) + > - sizeof (UINTN) + > + MinimalSizeNeeded = OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, > Data) + > MAX (sizeof (EFI_SMM_LOCK_BOX_PARAMETER_SAVE), > MAX (sizeof > (EFI_SMM_LOCK_BOX_PARAMETER_SET_ATTRIBUTES), > MAX (sizeof > (EFI_SMM_LOCK_BOX_PARAMETER_UPDATE), > @@ -142,7 +141,7 @@ SaveLockBox ( > EFI_SMM_COMMUNICATION_PROTOCOL *SmmCommunication; > EFI_SMM_LOCK_BOX_PARAMETER_SAVE *LockBoxParameterSave; > EFI_SMM_COMMUNICATE_HEADER *CommHeader; > - UINT8 TempCommBuffer[sizeof(EFI_GUID) + > sizeof(UINTN) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_SAVE)]; > + UINT8 TempCommBuffer[OFFSET_OF > (EFI_SMM_COMMUNICATE_HEADER, Data) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_SAVE)]; > UINT8 *CommBuffer; > UINTN CommSize; > > @@ -182,7 +181,7 @@ SaveLockBox ( > // > // Send command > // > - CommSize = sizeof(EFI_GUID) + sizeof(UINTN) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_SAVE); > + CommSize = OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_SAVE); > Status = SmmCommunication->Communicate ( > SmmCommunication, > &CommBuffer[0], > @@ -224,7 +223,7 @@ SetLockBoxAttributes ( > EFI_SMM_COMMUNICATION_PROTOCOL *SmmCommunication; > EFI_SMM_LOCK_BOX_PARAMETER_SET_ATTRIBUTES > *LockBoxParameterSetAttributes; > EFI_SMM_COMMUNICATE_HEADER *CommHeader; > - UINT8 TempCommBuffer[sizeof(EFI_GUID) + > sizeof(UINTN) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_SET_ATTRIBUTES)]; > + UINT8 TempCommBuffer[OFFSET_OF > (EFI_SMM_COMMUNICATE_HEADER, Data) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_SET_ATTRIBUTES)]; > UINT8 *CommBuffer; > UINTN CommSize; > > @@ -264,7 +263,7 @@ SetLockBoxAttributes ( > // > // Send command > // > - CommSize = sizeof(EFI_GUID) + sizeof(UINTN) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_SET_ATTRIBUTES); > + CommSize = OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_SET_ATTRIBUTES); > Status = SmmCommunication->Communicate ( > SmmCommunication, > &CommBuffer[0], > @@ -314,7 +313,7 @@ UpdateLockBox ( > EFI_SMM_COMMUNICATION_PROTOCOL *SmmCommunication; > EFI_SMM_LOCK_BOX_PARAMETER_UPDATE *LockBoxParameterUpdate; > EFI_SMM_COMMUNICATE_HEADER *CommHeader; > - UINT8 TempCommBuffer[sizeof(EFI_GUID) + > sizeof(UINTN) > + sizeof(EFI_SMM_LOCK_BOX_PARAMETER_UPDATE)]; > + UINT8 TempCommBuffer[OFFSET_OF > (EFI_SMM_COMMUNICATE_HEADER, Data) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_UPDATE)]; > UINT8 *CommBuffer; > UINTN CommSize; > > @@ -355,7 +354,7 @@ UpdateLockBox ( > // > // Send command > // > - CommSize = sizeof(EFI_GUID) + sizeof(UINTN) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_UPDATE); > + CommSize = OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_UPDATE); > Status = SmmCommunication->Communicate ( > SmmCommunication, > &CommBuffer[0], > @@ -403,7 +402,7 @@ RestoreLockBox ( > EFI_SMM_COMMUNICATION_PROTOCOL *SmmCommunication; > EFI_SMM_LOCK_BOX_PARAMETER_RESTORE *LockBoxParameterRestore; > EFI_SMM_COMMUNICATE_HEADER *CommHeader; > - UINT8 TempCommBuffer[sizeof(EFI_GUID) + > sizeof(UINTN) > + sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE)]; > + UINT8 TempCommBuffer[OFFSET_OF > (EFI_SMM_COMMUNICATE_HEADER, Data) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE)]; > UINT8 *CommBuffer; > UINTN CommSize; > > @@ -449,7 +448,7 @@ RestoreLockBox ( > // > // Send command > // > - CommSize = sizeof(EFI_GUID) + sizeof(UINTN) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE); > + CommSize = OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE); > Status = SmmCommunication->Communicate ( > SmmCommunication, > &CommBuffer[0], > @@ -488,7 +487,7 @@ RestoreAllLockBoxInPlace ( > EFI_SMM_COMMUNICATION_PROTOCOL *SmmCommunication; > EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE > *LockBoxParameterRestoreAllInPlace; > EFI_SMM_COMMUNICATE_HEADER *CommHeader; > - UINT8 > TempCommBuffer[sizeof(EFI_GUID) + > sizeof(UINTN) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE)]; > + UINT8 TempCommBuffer[OFFSET_OF > (EFI_SMM_COMMUNICATE_HEADER, Data) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE)]; > UINT8 *CommBuffer; > UINTN CommSize; > > @@ -518,7 +517,7 @@ RestoreAllLockBoxInPlace ( > // > // Send command > // > - CommSize = sizeof(EFI_GUID) + sizeof(UINTN) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE); > + CommSize = OFFSET_OF (EFI_SMM_COMMUNICATE_HEADER, Data) + > sizeof(EFI_SMM_LOCK_BOX_PARAMETER_RESTORE_ALL_IN_PLACE);
Reviewed-by: Hao A Wu <hao.a...@intel.com> Best Regards, Hao Wu > Status = SmmCommunication->Communicate ( > SmmCommunication, > &CommBuffer[0], > -- > 2.31.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#76882): https://edk2.groups.io/g/devel/message/76882 Mute This Topic: https://groups.io/mt/83624119/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-