ACK: [PATCH] tpm2: table size can be 76 when "LAML" & "LASA" are used

ivanhu ivan.hu at canonical.com
Thu Jul 23 07:34:34 UTC 2020


Thanks for clarification.

Acked-by: Ivan Hu <ivan.hu at canonical.com>


On 7/23/20 12:13 PM, Alex Hung wrote:
>
>
> On Wed, Jul 22, 2020 at 8:21 PM ivanhu <ivan.hu at canonical.com
> <mailto:ivan.hu at canonical.com>> wrote:
>
>
>
>     On 7/23/20 2:21 AM, Alex Hung wrote:
>     > TCG ACPI Specification released in 2017 added two fields, "Log Area
>     > Minimum Length" and "Log Area Start Address". When they are
>     used, the
>     > table size will be 76.
>     >
>     > Buglink: https://bugs.launchpad.net/bugs/1888189
>     >
>     > Signed-off-by: Alex Hung <alex.hung at canonical.com
>     <mailto:alex.hung at canonical.com>>
>     > ---
>     >  src/acpi/tpm2/tpm2.c | 35 +++++++++++++++++++----------------
>     >  1 file changed, 19 insertions(+), 16 deletions(-)
>     >
>     > diff --git a/src/acpi/tpm2/tpm2.c b/src/acpi/tpm2/tpm2.c
>     > index bca5cb8a..56b35a1c 100644
>     > --- a/src/acpi/tpm2/tpm2.c
>     > +++ b/src/acpi/tpm2/tpm2.c
>     > @@ -72,22 +72,25 @@ static int tpm2_test1(fwts_framework *fw)
>     >                       tpm2->start_method);
>     >       }
>>     > -     if (tpm2->start_method == 2 && table->length !=
>     sizeof(fwts_acpi_table_tpm2) + 4) {
>     > -             passed = false;
>     > -             fwts_failed(fw, LOG_LEVEL_HIGH,
>     > -                     "TPM2BadPlatformParameters",
>     > -                     "Table length must be 0x%" PRIx32 " if
>     Start method equals 2, got 0x%" PRIx32,
>     > -                     (uint32_t) sizeof(fwts_acpi_table_tpm2) + 4,
>     > -                     (uint32_t) table->length);
>     > -     }
>     > -
>     > -     if (tpm2->start_method == 11 && table->length <
>     sizeof(fwts_acpi_table_tpm2) + 12) {
>     > -             passed = false;
>     > -             fwts_failed(fw, LOG_LEVEL_HIGH,
>     > -                     "TPM2BadPlatformParameters",
>     > -                     "Table length must be atleast 0x%" PRIx32
>     " if Start method equals 11, got 0x%" PRIx32,
>     > -                     (uint32_t) sizeof(fwts_acpi_table_tpm2) + 12,
>     > -                     (uint32_t) table->length);
>     > +     /* When TPM2 includes fields "LAML" & "LASA", table size
>     will be fixed to 76. */
>     > +     if (table->length != 76) {
>
>     From the Spec, we shouldn't check the fixed size 76, the Start Method
>     Specific Parameters is variable, and both LAML and LASA are optional.
>
>     I think we should check the sizes of Start Method Specific Parameters,
>     LAML and LASA included or not.
>
>
> That's not entirely correct.
>
> The document
> (https://trustedcomputinggroup.org/wp-content/uploads/TCG_ACPIGeneralSpecification_v1.20_r8.pdf)
> states the length as below:
> ========================
> The length of this table starting from the Signature field up to
> and including the Start Method specific parameters field. (52
> + size of Start Method specific parameters)
> If the table contains LAML and LASA field, Length is 76.
> ========================
>
> It also states "Start Method Specific Parameters" can be varying or
> fixed in size
> ========================
> The content of the Start Method specific parameters is
> determined by the Start Method....
>
> If LAML and LASA are present, then this field is 12 bytes in size.
> ========================
>
> I would interpret that the length can be 76 or variable (52 + Specific
> Parameters). This is not depending on Start Method but on the
> availability of LAML and LASA.
>
> Note: This definition seems to be changed from 2013, but the table
> revision did not change.
>  
>
>
>     Cheers,
>     Ivan
>
>     > +             if (tpm2->start_method == 2 && table->length !=
>     sizeof(fwts_acpi_table_tpm2) + 4) {
>     > +                     passed = false;
>     > +                     fwts_failed(fw, LOG_LEVEL_HIGH,
>     > +                             "TPM2BadPlatformParameters",
>     > +                             "Table length must be 0x%" PRIx32
>     " if Start Method equals 2, "
>     > +                             "got 0x%" PRIx32, (uint32_t)
>     sizeof(fwts_acpi_table_tpm2) + 4,
>     > +                             (uint32_t) table->length);
>     > +             }
>     > +
>     > +             if (tpm2->start_method == 11 && table->length <
>     sizeof(fwts_acpi_table_tpm2) + 12) {
>     > +                     passed = false;
>     > +                     fwts_failed(fw, LOG_LEVEL_HIGH,
>     > +                             "TPM2BadPlatformParameters",
>     > +                             "Table length must be at least
>     0x%" PRIx32 " if Start Method equals 11, "
>     > +                             "got 0x%" PRIx32, (uint32_t)
>     sizeof(fwts_acpi_table_tpm2) + 12,
>     > +                             (uint32_t) table->length);
>     > +             }
>     >       }
>>     >       if (passed)
>     >
>
>
>
> -- 
> Cheers,
> Alex Hung
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/fwts-devel/attachments/20200723/286c0cb9/attachment-0001.html>


More information about the fwts-devel mailing list