On Thu, Nov 08, 2018 at 04:02:08PM +0200, Jarkko Sakkinen wrote: > On Tue, Nov 06, 2018 at 04:01:55PM +0100, Roberto Sassu wrote: > > tcg_efi_specid_event and tcg_pcr_event2 declaration contains static arrays > > for a list of hash algorithms used for event logs and event log digests. > > However, according to TCG EFI Protocol Specification, these arrays have > > variable sizes and are not suitable for parsing events with type casting. > > > > Since declaring static arrays with hard-coded sizes does not help to parse > > data after these arrays, this patch removes the declaration of > > TPM2_ACTIVE_PCR_BANKS and sets the size of the arrays above to zero. > > > > Fixes: 4d23cc323cdb ("tpm: add securityfs support for TPM 2.0 firmware > > event log") > > > > Signed-off-by: Roberto Sassu <roberto.sassu@xxxxxxxxxx> > > --- > > include/linux/tpm_eventlog.h | 5 ++--- > > 1 file changed, 2 insertions(+), 3 deletions(-) > > > > diff --git a/include/linux/tpm_eventlog.h b/include/linux/tpm_eventlog.h > > index 20d9da77fc11..3d5d162f09cc 100644 > > --- a/include/linux/tpm_eventlog.h > > +++ b/include/linux/tpm_eventlog.h > > @@ -8,7 +8,6 @@ > > #define TCG_EVENT_NAME_LEN_MAX 255 > > #define MAX_TEXT_EVENT 1000 /* Max event string length */ > > #define ACPI_TCPA_SIG "TCPA" /* 0x41504354 /'TCPA' */ > > -#define TPM2_ACTIVE_PCR_BANKS 3 > > > > #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 0x1 > > #define EFI_TCG2_EVENT_LOG_FORMAT_TCG_2 0x2 > > @@ -90,7 +89,7 @@ struct tcg_efi_specid_event { > > u8 spec_errata; > > u8 uintnsize; > > u32 num_algs; > > - struct tcg_efi_specid_event_algs digest_sizes[TPM2_ACTIVE_PCR_BANKS]; > > + struct tcg_efi_specid_event_algs digest_sizes[0]; > > u8 vendor_info_size; > > u8 vendor_info[0]; > > } __packed; > > @@ -117,7 +116,7 @@ struct tcg_pcr_event2 { > > u32 pcr_idx; > > u32 event_type; > > u32 count; > > - struct tpm2_digest digests[TPM2_ACTIVE_PCR_BANKS]; > > + struct tpm2_digest digests[0]; > > struct tcg_event_field event; > > Last two fields make sense at least without comment as they overlap. i.e. would be semantically equal to union { struct tpm2_digest digests[0]; struct tcg_event_field event; }; /Jarkko