Re: [PATCH v3] tpm: fix intermittent failure with self tests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear James,


Am 19.02.2018 um 13:24 schrieb James Bottomley:
Ever since

commit 2482b1bba5122b1d5516c909832bdd282015b8e9
Author: Alexander Steffen <Alexander.Steffen@xxxxxxxxxxxx>
Date:   Thu Aug 31 19:18:56 2017 +0200

     tpm: Trigger only missing TPM 2.0 self tests

My Nuvoton 6xx in a Dell XPS-13 has been intermittently failing to
work (necessitating a reboot). The problem seems to be that the TPM
gets into a state where the partial self-test doesn't return
TPM_RC_SUCCESS (meaning all tests have run to completion), but instead
returns TPM_RC_TESTING (meaning some tests are still running in the
background).  There are various theories that resending the self-test
command actually causes the tests to restart and thus triggers more
TPM_RC_TESTING returns until the timeout is exceeded.

There are several issues here: firstly being we shouldn't slow down
the boot sequence waiting for the self test to complete once the TPM
backgrounds them.  It will actually make available all functions that
have passed and if it gets a failure return TPM_RC_FAILURE to every
subsequent command.  So the fix is to kick off self tests once and if
they return TPM_RC_TESTING log that as a backgrounded self test and
continue on.  In order to prevent other tpm users from seeing any
TPM_RC_TESTING returns (which it might if they send a command that
needs a TPM subsystem which is still under test), we loop in
tpm_transmit_cmd until either a timeout or we don't get a
TPM_RC_TESTING return.

Finally, there have been observations of strange returns from a
partial test. One Nuvoton is occasionally returning
TPM_RC_COMMAND_CODE, so treat any unexpected return from a partial
self test as an indication we need to run a full self test.

Signed-off-by: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
Fixes: 2482b1bba5122b1d5516c909832bdd282015b8e9

Thank you for fixing the regression. Could you tag this for stable too, or does this subsystem handle this differently?


Kind regards,

Paul



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux Kernel]     [Linux Kernel Hardening]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux