Commit a28f6c29 authored by Vadim Sukhomlinov's avatar Vadim Sukhomlinov Committed by Greg Kroah-Hartman

tpm: Fix TPM 1.2 Shutdown sequence to prevent future TPM operations

commit db4d8cb9 upstream.

TPM 2.0 Shutdown involve sending TPM2_Shutdown to TPM chip and disabling
future TPM operations. TPM 1.2 behavior was different, future TPM
operations weren't disabled, causing rare issues. This patch ensures
that future TPM operations are disabled.

Fixes: d1bd4a79 ("tpm: Issue a TPM2_Shutdown for TPM2 devices.")
Cc: stable@vger.kernel.org
Signed-off-by: default avatarVadim Sukhomlinov <sukhomlinov@google.com>
[dianders: resolved merge conflicts with mainline]
Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
Reviewed-by: default avatarJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: default avatarJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 446daaf5
...@@ -294,15 +294,15 @@ static int tpm_class_shutdown(struct device *dev) ...@@ -294,15 +294,15 @@ static int tpm_class_shutdown(struct device *dev)
{ {
struct tpm_chip *chip = container_of(dev, struct tpm_chip, dev); struct tpm_chip *chip = container_of(dev, struct tpm_chip, dev);
if (chip->flags & TPM_CHIP_FLAG_TPM2) {
down_write(&chip->ops_sem); down_write(&chip->ops_sem);
if (chip->flags & TPM_CHIP_FLAG_TPM2) {
if (!tpm_chip_start(chip)) { if (!tpm_chip_start(chip)) {
tpm2_shutdown(chip, TPM2_SU_CLEAR); tpm2_shutdown(chip, TPM2_SU_CLEAR);
tpm_chip_stop(chip); tpm_chip_stop(chip);
} }
}
chip->ops = NULL; chip->ops = NULL;
up_write(&chip->ops_sem); up_write(&chip->ops_sem);
}
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment