Re: [PATCH v5 2/7] tpm: remove definition of TPM2_ACTIVE_PCR_BANKS

From: Roberto Sassu
Date: Thu Nov 29 2018 - 07:05:02 EST


On 11/28/2018 1:17 PM, Roberto Sassu wrote:
On 11/16/2018 2:38 PM, Jarkko Sakkinen wrote:
On Wed, Nov 14, 2018 at 04:31:03PM +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. Setting the array size to zero or 3 does not make any
difference, because the parser has to adjust the offset depending on the
actual array size to access structure members after the static arrays.

Thus, this patch removes the declaration of TPM2_ACTIVE_PCR_BANKS and sets
the array size 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;
 } __packed;
--
2.17.1


NAK for the same reason as last time.

I added this comment to include/linux/tpm_eventlog.h:

/*
Â* http://www.trustedcomputinggroup.org/tcg-efi-protocol-specification/
Â*
Â* Set the size of 'digest_sizes' and 'digests', members of tcg_efi_specid_event
Â* and tcg_pcr_event2, to zero. Structures with variable-sized arrays placed
Â* midway are not suitable for type casting.
Â*/


If this comment is ok, I will send a new version of the patch set.

Roberto


/Jarkko



--
HUAWEI TECHNOLOGIES Duesseldorf GmbH, HRB 56063
Managing Director: Bo PENG, Jian LI, Yanli SHI