Message ID | 20190925101532.31280-4-jarkko.sakkinen@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tpm: Fix TPM 1.2 Shutdown sequence to prevent future TPM operations | expand |
On Wed, Sep 25, 2019 at 01:15:32PM +0300, Jarkko Sakkinen wrote: >From: Vadim Sukhomlinov <sukhomlinov@google.com> > >commit db4d8cb9c9f2af71c4d087817160d866ed572cc9 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: d1bd4a792d39 ("tpm: Issue a TPM2_Shutdown for TPM2 devices.") >Cc: stable@vger.kernel.org >Signed-off-by: Vadim Sukhomlinov <sukhomlinov@google.com> >[dianders: resolved merge conflicts with mainline] >Signed-off-by: Douglas Anderson <dianders@chromium.org> >Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> >Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> I've queued it up for 4.19 and 4.14, thanks! -- Thanks, Sasha
diff --git a/drivers/char/tpm/tpm-chip.c b/drivers/char/tpm/tpm-chip.c index 0eca20c5a80c..ede8c1deca97 100644 --- a/drivers/char/tpm/tpm-chip.c +++ b/drivers/char/tpm/tpm-chip.c @@ -158,12 +158,15 @@ static int tpm_class_shutdown(struct device *dev) { struct tpm_chip *chip = container_of(dev, struct tpm_chip, dev); + down_write(&chip->ops_sem); if (chip->flags & TPM_CHIP_FLAG_TPM2) { down_write(&chip->ops_sem); tpm2_shutdown(chip, TPM2_SU_CLEAR); chip->ops = NULL; up_write(&chip->ops_sem); } + chip->ops = NULL; + up_write(&chip->ops_sem); return 0; }