linux/drivers/char/tpm
Josh Zimmerman b635182b4f tpm: Issue a TPM2_Shutdown for TPM2 devices.
commit d1bd4a792d upstream.

If a TPM2 loses power without a TPM2_Shutdown command being issued (a
"disorderly reboot"), it may lose some state that has yet to be
persisted to NVRam, and will increment the DA counter. After the DA
counter gets sufficiently large, the TPM will lock the user out.

NOTE: This only changes behavior on TPM2 devices. Since TPM1 uses sysfs,
and sysfs relies on implicit locking on chip->ops, it is not safe to
allow this code to run in TPM1, or to add sysfs support to TPM2, until
that locking is made explicit.

Signed-off-by: Josh Zimmerman <joshz@google.com>
Fixes: 74d6b3ceaa ("tpm: fix suspend/resume paths for TPM 2.0")
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: James Morris <james.l.morris@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2017-07-15 12:16:11 +02:00
..
st33zp24 tpm/st33zp24: Remove useless tpm_gen_interrupt 2016-09-15 16:04:21 +03:00
Kconfig tpm/tpm_tis_spi: Add support for spi phy 2016-06-25 17:28:57 +03:00
Makefile tpm/tpm_tis_spi: Add support for spi phy 2016-06-25 17:28:57 +03:00
tpm-chip.c tpm: Issue a TPM2_Shutdown for TPM2 devices. 2017-07-15 12:16:11 +02:00
tpm-dev.c tpm: fix a race condition in tpm2_unseal_trusted() 2016-09-15 16:04:21 +03:00
tpm-interface.c tpm_tis: use default timeout value if chip reports it as zero 2017-05-08 07:47:55 +02:00
tpm-sysfs.c tpm: Issue a TPM2_Shutdown for TPM2 devices. 2017-07-15 12:16:11 +02:00
tpm.h tpm: fix RC value check in tpm2_seal_trusted 2017-05-14 14:00:13 +02:00
tpm2-cmd.c tpm: fix RC value check in tpm2_seal_trusted 2017-05-14 14:00:13 +02:00
tpm_acpi.c ACPI: Clean up acpi_os_map/unmap_memory() to eliminate __iomem. 2014-05-27 18:13:08 +02:00
tpm_atmel.c tpm: Remove useless priv field in struct tpm_vendor_specific 2016-06-25 17:26:35 +03:00
tpm_atmel.h tpm: Remove useless priv field in struct tpm_vendor_specific 2016-06-25 17:26:35 +03:00
tpm_crb.c tpm_crb: check for bad response size 2017-05-25 15:44:32 +02:00
tpm_eventlog.c tpm: Get rid of devname 2016-06-25 17:26:35 +03:00
tpm_eventlog.h tpm: fix tpm_bios_log_setup stub prototype 2016-06-25 17:26:35 +03:00
tpm_i2c_atmel.c tpm: Factor out common startup code 2016-07-19 17:43:38 +03:00
tpm_i2c_infineon.c tpm: Factor out common startup code 2016-07-19 17:43:38 +03:00
tpm_i2c_nuvoton.c tpm: add sleep only for retry in i2c_nuvoton_write_status() 2017-05-25 15:44:32 +02:00
tpm_ibmvtpm.c vTPM: Fix missing NULL check 2017-06-24 07:11:17 +02:00
tpm_ibmvtpm.h tpm_ibmvtpm: properly handle interrupted packet receptions 2015-12-20 15:27:12 +02:00
tpm_infineon.c tpm: Get rid of chip->pdev 2016-06-25 17:26:35 +03:00
tpm_nsc.c tpm: Remove useless priv field in struct tpm_vendor_specific 2016-06-25 17:26:35 +03:00
tpm_of.c TPM: Avoid reference to potentially freed memory 2015-11-09 17:52:55 +02:00
tpm_ppi.c tpm: move the PPI attributes to character device directory. 2015-10-19 01:01:20 +02:00
tpm_tis.c tpm_tis: fix the error handling of init_tis() 2017-03-12 06:41:43 +01:00
tpm_tis_core.c tpm_tis_core: Choose appropriate timeout for reading burstcount 2017-05-25 15:44:30 +02:00
tpm_tis_core.h tpm/tpm_tis: Split tpm_tis driver into a core and TCG TIS compliant phy 2016-06-25 17:28:57 +03:00
tpm_tis_spi.c tpm_tis_spi: Add small delay after last transfer 2017-05-25 15:44:32 +02:00
tpm_vtpm_proxy.c tpm: Factor out common startup code 2016-07-19 17:43:38 +03:00
xen-tpmfront.c tpm xen: Remove bogus tpm_chip_unregister 2017-01-06 10:40:17 +01:00