linux/drivers/char/tpm
Denis Aleksandrov a29ad21b98 tpm: Prevent local DOS via tpm/tpm0/ppi/*operations
Reads on tpm/tpm0/ppi/*operations can become very long on
misconfigured systems. Reading the TPM is a blocking operation,
thus a user could effectively trigger a DOS.

Resolve this by caching the results and avoiding the blocking
operations after the first read.

[ jarkko: fixed atomic sleep:
  sed -i 's/spin_/mutex_/g' drivers/char/tpm/tpm_ppi.c
  sed -i 's/DEFINE_SPINLOCK/DEFINE_MUTEX/g' drivers/char/tpm/tpm_ppi.c ]

Signed-off-by: Denis Aleksandrov <daleksan@redhat.com>
Reported-by: Jan Stancek <jstancek@redhat.com>
Closes: https://lore.kernel.org/linux-integrity/20250915210829.6661-1-daleksan@redhat.com/T/#u
Suggested-by: Jarkko Sakkinen <jarkko@kernel.org>
Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
2025-10-10 08:21:45 +03:00
..
eventlog Hi, 2025-07-28 18:18:16 -07:00
st33zp24 tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +03:00
Kconfig tpm: Compare HMAC values in constant time 2025-10-10 08:21:45 +03:00
Makefile tpm: Add a driver for Loongson TPM device 2025-09-02 12:29:57 +01:00
tpm_atmel.c tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +03:00
tpm_crb_ffa.c tpm_crb_ffa: handle tpm busy return code 2025-07-23 02:32:00 +03:00
tpm_crb_ffa.h tpm_crb_ffa: Remove unused export 2025-07-23 02:23:18 +03:00
tpm_crb.c tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +03:00
tpm_ftpm_tee.c tpm/tpm_ftpm_tee: support TPM_CHIP_FLAG_SYNC 2025-07-23 02:23:18 +03:00
tpm_ftpm_tee.h tpm/tpm_ftpm_tee: support TPM_CHIP_FLAG_SYNC 2025-07-23 02:23:18 +03:00
tpm_i2c_atmel.c tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +03:00
tpm_i2c_infineon.c tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +03:00
tpm_i2c_nuvoton.c tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +03:00
tpm_ibmvtpm.c tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +03:00
tpm_ibmvtpm.h tpm: ibmvtpm: Avoid error message when process gets signal while waiting 2021-08-23 19:55:42 +03:00
tpm_infineon.c tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +03:00
tpm_loongson.c tpm: loongson: Add bufsiz parameter to tpm_loongson_send() 2025-09-25 12:45:03 +01:00
tpm_nsc.c tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +03:00
tpm_ppi.c tpm: Prevent local DOS via tpm/tpm0/ppi/*operations 2025-10-10 08:21:45 +03:00
tpm_svsm.c tpm/tpm_svsm: support TPM_CHIP_FLAG_SYNC 2025-07-23 02:23:18 +03:00
tpm_tis_core.c tpm_tis: Fix incorrect arguments in tpm_tis_probe_irq_single 2025-10-10 08:21:45 +03:00
tpm_tis_core.h tpm: tis: Double the timeout B to 4s 2025-05-15 04:49:15 +03:00
tpm_tis_i2c_cr50.c tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +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_spi_cr50.c tpm: Remove read16/read32/write32 calls from tpm_tis_phy_ops 2022-05-23 18:47:49 +03:00
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_spi.h tpm: Remove read16/read32/write32 calls from tpm_tis_phy_ops 2022-05-23 18:47:49 +03:00
tpm_tis_synquacer.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
tpm_tis.c Get rid of 'remove_new' relic from platform driver struct 2024-12-01 15:12:43 -08:00
tpm_vtpm_proxy.c tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +03:00
tpm-buf.c char: tpm: tpm-buf: Add sanity check fallback in read helpers 2025-05-15 04:47:14 +03:00
tpm-chip.c tpm: End any active auth session before shutdown 2025-03-27 15:34:05 +02:00
tpm-dev-common.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +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: use a map for tpm2_calc_ordinal_duration() 2025-10-10 08:21:45 +03: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: use a map for tpm2_calc_ordinal_duration() 2025-10-10 08:21:45 +03:00
tpm1-cmd.c tpm: Add upgrade/reduced mode support for TPM1.2 modules 2022-08-03 23:56:19 +03:00
tpm2-cmd.c tpm: use a map for tpm2_calc_ordinal_duration() 2025-10-10 08:21:45 +03:00
tpm2-sessions.c tpm: Use HMAC-SHA256 library instead of open-coded HMAC 2025-10-10 08:21:45 +03:00
tpm2-space.c move asm/unaligned.h to linux/unaligned.h 2024-10-02 17:23:23 -04:00
tpmrm-dev.c [tree-wide] finally take no_llseek out 2024-09-27 08:18:43 -07:00
xen-tpmfront.c tpm: add bufsiz parameter in the .send callback 2025-07-23 02:23:18 +03:00