From 093124e51a26de8191e21ce41988532ea7e0bc8a Mon Sep 17 00:00:00 2001 From: Jarkko Sakkinen Date: Thu, 12 Nov 2026 03:55:00 +0200 Subject: [PATCH] tpm: Disable TPM on TPM_RC_INITIALIZE If the TPM has been spuriously disabled, the game is over. Let's reflect this truth with TPM_CHIP_FLAG_DISABLE. Signed-off-by: Jarkko Sakkinen --- drivers/char/tpm/tpm-interface.c | 5 +++++ drivers/char/tpm/tpm2-cmd.c | 2 ++ 2 files changed, 7 insertions(+) diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c index 470b2da3234e..1f1e22341155 100644 --- a/drivers/char/tpm/tpm-interface.c +++ b/drivers/char/tpm/tpm-interface.c @@ -256,6 +256,11 @@ ssize_t tpm_transmit(struct tpm_chip *chip, u8 *buf, size_t bufsiz) if (rc == TPM2_RC_TESTING && cc == TPM2_CC_SELF_TEST) break; + if (rc == TPM_RC_INITIALIZE) { + chip->flag |= TPM_CHIP_FLAG_DISABLE; + break; + } + if (delay_msec > TPM2_DURATION_LONG) { if (rc == TPM2_RC_RETRY) dev_err(&chip->dev, "in retry loop\n"); diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c index 7fe00b4f8e7d..8d76e78cd92e 100644 --- a/drivers/char/tpm/tpm2-cmd.c +++ b/drivers/char/tpm/tpm2-cmd.c @@ -1021,6 +1021,8 @@ int tpm2_auto_startup(struct tpm_chip *chip) goto out; if (rc == TPM2_RC_INITIALIZE) { + chip->flags &= ~TPM_CHIP_FLAG_DISABLE; + rc = tpm2_startup(chip); if (rc) goto out; -- 2.47.3