linux/drivers/char/tpm
Jarkko Sakkinen 9265fed6db tpm: Lock TPM chip in tpm_pm_suspend() first
Setting TPM_CHIP_FLAG_SUSPENDED in the end of tpm_pm_suspend() can be racy
according, as this leaves window for tpm_hwrng_read() to be called while
the operation is in progress. The recent bug report gives also evidence of
this behaviour.

Aadress this by locking the TPM chip before checking any chip->flags both
in tpm_pm_suspend() and tpm_hwrng_read(). Move TPM_CHIP_FLAG_SUSPENDED
check inside tpm_get_random() so that it will be always checked only when
the lock is reserved.

Cc: stable@vger.kernel.org # v6.4+
Fixes: 99d4645062 ("tpm: Prevent hwrng from activating during resume")
Reported-by: Mike Seo <mikeseohyungjin@gmail.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219383
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com>
Tested-by: Mike Seo <mikeseohyungjin@gmail.com>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
2024-11-04 01:59:08 +02:00
..
eventlog char: tpm: Fix possible memory leak in tpm_bios_measurements_open() 2024-07-01 15:50:02 +00:00
st33zp24 tpm: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-09-17 18:56:37 +03:00
Kconfig tpm: Enable TCG_TPM2_HMAC by default only for X86_64 2024-05-28 13:14:29 +03:00
Makefile tpm: Address !chip->auth in tpm_buf_append_name() 2024-07-05 02:12:27 +03:00
tpm-buf.c tpm: Open code tpm_buf_parameters() 2024-05-28 13:03:57 +03:00
tpm-chip.c tpm: Lock TPM chip in tpm_pm_suspend() first 2024-11-04 01:59:08 +02:00
tpm-dev-common.c tpm: Lazily flush the auth session 2024-10-29 00:46:20 +02:00
tpm-dev.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
tpm-dev.h
tpm-interface.c tpm: Lock TPM chip in tpm_pm_suspend() first 2024-11-04 01:59:08 +02:00
tpm-sysfs.c tpm: add the null key name as a sysfs export 2024-05-09 22:30:52 +03:00
tpm.h tpm: Switch to new Intel CPU model defines 2024-06-05 04:55:04 +03:00
tpm1-cmd.c
tpm2-cmd.c tpm: Open code tpm_buf_parameters() 2024-05-28 13:03:57 +03:00
tpm2-sessions.c tpm: Lazily flush the auth session 2024-10-29 00:46:20 +02:00
tpm2-space.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
tpm_atmel.c
tpm_atmel.h
tpm_crb.c
tpm_ftpm_tee.c
tpm_ftpm_tee.h
tpm_i2c_atmel.c tpm: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-09-17 18:56:37 +03:00
tpm_i2c_infineon.c
tpm_i2c_nuvoton.c
tpm_ibmvtpm.c tpm: ibmvtpm: Call tpm2_sessions_init() to initialize session support 2024-08-27 21:11:44 +03:00
tpm_ibmvtpm.h
tpm_infineon.c char: tpm: Keep TPM_INF_IO_PORT define for HAS_IOPORT=n 2024-05-09 22:30:50 +03:00
tpm_nsc.c
tpm_ppi.c
tpm_tis.c
tpm_tis_core.c tpm_tis: Do *not* flush uninitialized work 2024-06-05 01:18:01 +03:00
tpm_tis_core.h tpm: Switch to new Intel CPU model defines 2024-06-05 04:55:04 +03:00
tpm_tis_i2c.c tpm: Drop explicit initialization of struct i2c_device_id::driver_data to 0 2024-09-17 18:56:37 +03:00
tpm_tis_i2c_cr50.c
tpm_tis_spi.h
tpm_tis_spi_cr50.c
tpm_tis_spi_main.c tpm_tis_spi: add missing attpm20p SPI device ID entry 2024-07-01 15:50:02 +00:00
tpm_tis_synquacer.c
tpm_vtpm_proxy.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
tpmrm-dev.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
xen-tpmfront.c