linux/drivers/char/tpm
Tadeusz Struk 0bcdb35ecf tpm: fix race condition in tpm_common_write()
commit 3ab2011ea3 upstream.

There is a race condition in tpm_common_write function allowing
two threads on the same /dev/tpm<N>, or two different applications
on the same /dev/tpmrm<N> to overwrite each other commands/responses.
Fixed this by taking the priv->buffer_mutex early in the function.

Also converted the priv->data_pending from atomic to a regular size_t
type. There is no need for it to be atomic since it is only touched
under the protection of the priv->buffer_mutex.

Fixes: 1da177e4c3 ("Linux-2.6.12-rc2")
Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
[bwh: Backported to 3.16: adjust filenames, context]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2018-11-20 18:05:05 +00:00
..
Kconfig Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
Makefile tpm: Move sysfs functions from tpm-interface to tpm-sysfs 2014-01-06 14:37:24 +01:00
tpm-dev.c tpm: fix race condition in tpm_common_write() 2018-11-20 18:05:05 +00:00
tpm-interface.c tpm: fix potential buffer overruns caused by bit glitches on the bus 2018-06-16 22:22:27 +01:00
tpm-sysfs.c tpm: fix a kernel memory leak in tpm-sysfs.c 2017-10-12 15:28:02 +01:00
tpm.h tpm: Make tpm-dev allocate a per-file structure 2014-01-06 14:37:25 +01: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: Create a tpm_class_ops structure and use it in the drivers 2014-01-06 14:37:25 +01:00
tpm_atmel.h tpmdd maintainers 2007-08-22 19:52:44 -07:00
tpm_eventlog.c tpm: Merge the tpm-bios module with tpm.o 2013-10-22 19:43:01 +02:00
tpm_eventlog.h drivers/char/tpm: Add securityfs support for event log 2012-08-22 16:22:47 -05:00
tpm_i2c_atmel.c char: tpm: Add missing error check for devm_kzalloc 2015-02-24 10:01:04 +00:00
tpm_i2c_infineon.c tpm_i2c_infineon: fix potential buffer overruns caused by bit glitches on the bus 2018-06-16 22:22:27 +01:00
tpm_i2c_nuvoton.c tpm_i2c_nuvoton: fix potential buffer overruns caused by bit glitches on the bus 2018-06-16 22:22:27 +01:00
tpm_i2c_stm_st33.c tpm/tpm_i2c_stm_st33: Add status check when reading data on the FIFO 2015-02-24 10:01:05 +00:00
tpm_i2c_stm_st33.h tpm_i2c_stm_st33: fix oops when i2c client is unavailable 2013-02-05 09:38:24 -06:00
tpm_ibmvtpm.c vTPM: fix memory allocation flag for rtce buffer at kernel boot 2015-12-13 17:48:49 +00:00
tpm_ibmvtpm.h tpm/ibmvtpm: Additional LE support for tpm_ibmvtpm_send 2015-03-23 15:16:34 +00:00
tpm_infineon.c tpm: Create a tpm_class_ops structure and use it in the drivers 2014-01-06 14:37:25 +01:00
tpm_nsc.c tpm: Create a tpm_class_ops structure and use it in the drivers 2014-01-06 14:37:25 +01:00
tpm_of.c TPM: Avoid reference to potentially freed memory 2015-12-13 17:49:45 +00:00
tpm_ppi.c ACPI / TPM: Fix resume regression on Chromebooks 2014-05-12 01:13:28 +02:00
tpm_tis.c tpm_tis: fix potential buffer overruns caused by bit glitches on the bus 2018-06-16 22:22:27 +01:00
xen-tpmfront.c Features: 2014-01-22 22:00:18 -08:00