Hi Jian I purposely put the line there, because I want to group all the rev 0 code together and rev 105 code together in if statement. I don't want to move that particular line to else statement.
Thank you Yao Jiewen > -----Original Message----- > From: Wang, Jian J <jian.j.w...@intel.com> > Sent: Monday, January 6, 2020 1:33 PM > To: Yao, Jiewen <jiewen....@intel.com>; devel@edk2.groups.io > Cc: Zhang, Chao B <chao.b.zh...@intel.com> > Subject: RE: [PATCH 6/6] SecurityPkg/Tcg2Pei: Add TCG PFP 105 support. > > Jiewen, > > Just one minor comment. With it addressed, > > Reviewed-by: Jian J Wang <jian.j.w...@intel.com> > > > > -----Original Message----- > > From: Yao, Jiewen <jiewen....@intel.com> > > Sent: Tuesday, December 31, 2019 2:44 PM > > To: devel@edk2.groups.io > > Cc: Wang, Jian J <jian.j.w...@intel.com>; Zhang, Chao B > > <chao.b.zh...@intel.com> > > Subject: [PATCH 6/6] SecurityPkg/Tcg2Pei: Add TCG PFP 105 support. > > > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2439 > > > > Use EV_EFI_PLATFORM_FIRMWARE_BLOB2 if the TCG PFP revision is >= 105. > > Use FvName as the description for the FV. > > > > Cc: Jian J Wang <jian.j.w...@intel.com> > > Cc: Chao Zhang <chao.b.zh...@intel.com> > > Signed-off-by: Jiewen Yao <jiewen....@intel.com> > > --- > > SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c | 91 ++++++++++++++++++++++++++--- > > SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf | 2 + > > 2 files changed, 84 insertions(+), 9 deletions(-) > > > > diff --git a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > > b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > > index 1565d4e402..7d99c7906a 100644 > > --- a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > > +++ b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.c > > @@ -37,6 +37,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > > #include <Library/MemoryAllocationLib.h> > > #include <Library/ReportStatusCodeLib.h> > > #include <Library/ResetSystemLib.h> > > +#include <Library/PrintLib.h> > > > > #define PERF_ID_TCG2_PEI 0x3080 > > > > @@ -78,6 +79,18 @@ EFI_PLATFORM_FIRMWARE_BLOB > > *mMeasuredChildFvInfo; > > UINT32 mMeasuredMaxChildFvIndex = 0; > > UINT32 mMeasuredChildFvIndex = 0; > > > > +#pragma pack (1) > > + > > +#define FV_HANDOFF_TABLE_DESC "Fv(XXXXXXXX-XXXX-XXXX-XXXX- > > XXXXXXXXXXXX)" > > +typedef struct { > > + UINT8 BlobDescriptionSize; > > + UINT8 > > BlobDescription[sizeof(FV_HANDOFF_TABLE_DESC)]; > > + EFI_PHYSICAL_ADDRESS BlobBase; > > + UINT64 BlobLength; > > +} FV_HANDOFF_TABLE_POINTERS2; > > + > > +#pragma pack () > > + > > /** > > Measure and record the Firmware Volume Information once FvInfoPPI > > install. > > > > @@ -447,6 +460,48 @@ MeasureCRTMVersion ( > > ); > > } > > > > +/* > > + Get the FvName from the FV header. > > + > > + Causion: The FV is untrusted input. > > + > > + @param[in] FvBase Base address of FV image. > > + @param[in] FvLength Length of FV image. > > + > > + @return FvName pointer > > + @retval NULL FvName is NOT found > > +*/ > > +VOID * > > +GetFvName ( > > + IN EFI_PHYSICAL_ADDRESS FvBase, > > + IN UINT64 FvLength > > + ) > > +{ > > + EFI_FIRMWARE_VOLUME_HEADER *FvHeader; > > + EFI_FIRMWARE_VOLUME_EXT_HEADER *FvExtHeader; > > + > > + if (FvBase >= MAX_ADDRESS) { > > + return NULL; > > + } > > + if (FvLength >= MAX_ADDRESS - FvBase) { > > + return NULL; > > + } > > + if (FvLength < sizeof(EFI_FIRMWARE_VOLUME_HEADER)) { > > + return NULL; > > + } > > + > > + FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FvBase; > > + if (FvHeader->ExtHeaderOffset < sizeof(EFI_FIRMWARE_VOLUME_HEADER)) > { > > + return NULL; > > + } > > + if (FvHeader->ExtHeaderOffset + > > sizeof(EFI_FIRMWARE_VOLUME_EXT_HEADER) > FvLength) { > > + return NULL; > > + } > > + FvExtHeader = (EFI_FIRMWARE_VOLUME_EXT_HEADER *)(UINTN)(FvBase + > > FvHeader->ExtHeaderOffset); > > + > > + return &FvExtHeader->FvName; > > +} > > + > > /** > > Measure FV image. > > Add it into the measured FV list after the FV is measured successfully. > > @@ -469,6 +524,9 @@ MeasureFvImage ( > > UINT32 Index; > > EFI_STATUS Status; > > EFI_PLATFORM_FIRMWARE_BLOB FvBlob; > > + FV_HANDOFF_TABLE_POINTERS2 FvBlob2; > > + VOID *EventData; > > + VOID *FvName; > > TCG_PCR_EVENT_HDR TcgEventHdr; > > UINT32 Instance; > > UINT32 Tpm2HashMask; > > @@ -571,6 +629,21 @@ MeasureFvImage ( > > TcgEventHdr.PCRIndex = 0; > > TcgEventHdr.EventType = EV_EFI_PLATFORM_FIRMWARE_BLOB; > > TcgEventHdr.EventSize = sizeof (FvBlob); > > + EventData = &FvBlob; > > + > > I'd suggest to put above code in 'else' block to make code easier to read, > i.e. FvBlob for revision less than 105 and FvBlob2 for later ones. > > Regards, > Jian > > > + if (PcdGet32(PcdTcgPfpMeasurementRevision) >= > > TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105) { > > + FvBlob2.BlobDescriptionSize = sizeof(FvBlob2.BlobDescription); > > + CopyMem (FvBlob2.BlobDescription, FV_HANDOFF_TABLE_DESC, > > sizeof(FvBlob2.BlobDescription)); > > + FvName = GetFvName (FvBase, FvLength); > > + if (FvName != NULL) { > > + AsciiSPrint ((CHAR8 *)FvBlob2.BlobDescription, > > sizeof(FvBlob2.BlobDescription), "Fv(%g)", FvName); > > + } > > + FvBlob2.BlobBase = FvBlob.BlobBase; > > + FvBlob2.BlobLength = FvBlob.BlobLength; > > + TcgEventHdr.EventType = EV_EFI_PLATFORM_FIRMWARE_BLOB2; > > + TcgEventHdr.EventSize = sizeof (FvBlob2); > > + EventData = &FvBlob2; > > + } > > > > if (Tpm2HashMask == 0) { > > // > > @@ -583,9 +656,9 @@ MeasureFvImage ( > > ); > > > > if (!EFI_ERROR(Status)) { > > - Status = LogHashEvent (&DigestList, &TcgEventHdr, (UINT8*) &FvBlob); > > - DEBUG ((DEBUG_INFO, "The pre-hashed FV which is extended & logged > by > > Tcg2Pei starts at: 0x%x\n", FvBlob.BlobBase)); > > - DEBUG ((DEBUG_INFO, "The pre-hashed FV which is extended & logged > by > > Tcg2Pei has the size: 0x%x\n", FvBlob.BlobLength)); > > + Status = LogHashEvent (&DigestList, &TcgEventHdr, EventData); > > + DEBUG ((DEBUG_INFO, "The pre-hashed FV which is extended & logged > by > > Tcg2Pei starts at: 0x%x\n", FvBase)); > > + DEBUG ((DEBUG_INFO, "The pre-hashed FV which is extended & logged > by > > Tcg2Pei has the size: 0x%x\n", FvLength)); > > } else if (Status == EFI_DEVICE_ERROR) { > > BuildGuidHob (&gTpmErrorHobGuid,0); > > REPORT_STATUS_CODE ( > > @@ -599,13 +672,13 @@ MeasureFvImage ( > > // > > Status = HashLogExtendEvent ( > > 0, > > - (UINT8*) (UINTN) FvBlob.BlobBase, > > - (UINTN) FvBlob.BlobLength, > > - &TcgEventHdr, > > - (UINT8*) &FvBlob > > + (UINT8*) (UINTN) FvBase, // HashData > > + (UINTN) FvLength, // HashDataLen > > + &TcgEventHdr, // EventHdr > > + EventData // EventData > > ); > > - DEBUG ((DEBUG_INFO, "The FV which is measured by Tcg2Pei starts at: > > 0x%x\n", FvBlob.BlobBase)); > > - DEBUG ((DEBUG_INFO, "The FV which is measured by Tcg2Pei has the size: > > 0x%x\n", FvBlob.BlobLength)); > > + DEBUG ((DEBUG_INFO, "The FV which is measured by Tcg2Pei starts at: > > 0x%x\n", FvBase)); > > + DEBUG ((DEBUG_INFO, "The FV which is measured by Tcg2Pei has the size: > > 0x%x\n", FvLength)); > > } > > > > if (EFI_ERROR(Status)) { > > diff --git a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf > > b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf > > index 30f985b6ea..3d361e8859 100644 > > --- a/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf > > +++ b/SecurityPkg/Tcg/Tcg2Pei/Tcg2Pei.inf > > @@ -54,6 +54,7 @@ > > MemoryAllocationLib > > ReportStatusCodeLib > > ResetSystemLib > > + PrintLib > > > > [Guids] > > gTcgEventEntryHobGuid ## > > PRODUCES ## > > HOB > > @@ -74,6 +75,7 @@ > > > > [Pcd] > > gEfiMdeModulePkgTokenSpaceGuid.PcdFirmwareVersionString ## > > SOMETIMES_CONSUMES > > + gEfiMdeModulePkgTokenSpaceGuid.PcdTcgPfpMeasurementRevision > ## > > CONSUMES > > gEfiSecurityPkgTokenSpaceGuid.PcdTpmInstanceGuid ## > > CONSUMES > > gEfiSecurityPkgTokenSpaceGuid.PcdTpm2InitializationPolicy ## > > CONSUMES > > gEfiSecurityPkgTokenSpaceGuid.PcdTpm2SelfTestPolicy ## > > SOMETIMES_CONSUMES > > -- > > 2.19.2.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#52875): https://edk2.groups.io/g/devel/message/52875 Mute This Topic: https://groups.io/mt/69344973/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-