summaryrefslogtreecommitdiffstats
path: root/drivers/char
diff options
context:
space:
mode:
authorChristophe Ricard <christophe.ricard@gmail.com>2014-12-01 19:32:46 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-03-06 14:52:57 -0800
commit4243c6c895971ee74a688f1f235f3fb7ca0f07b3 (patch)
tree57bf912032c996a8a747175f5c769c6be4232b45 /drivers/char
parent2a7a2065baa0a0d72d77d7875bef78761d2e704c (diff)
downloadlinux-stable-4243c6c895971ee74a688f1f235f3fb7ca0f07b3.tar.gz
linux-stable-4243c6c895971ee74a688f1f235f3fb7ca0f07b3.tar.bz2
linux-stable-4243c6c895971ee74a688f1f235f3fb7ca0f07b3.zip
tpm/tpm_i2c_stm_st33: Fix potential bug in tpm_stm_i2c_send
commit 1ba3b0b6f218072afe8372d12f1b6bf26a26008e upstream. When sending data in tpm_stm_i2c_send, each loop iteration send buf. Send buf + i instead as the goal of this for loop is to send a number of byte from buf that fit in burstcnt. Once those byte are sent, we are supposed to send the next ones. The driver was working because the burstcount value returns always the maximum size for a TPM command or response. (0x800 for a command and 0x400 for a response). Reviewed-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> Signed-off-by: Christophe Ricard <christophe-h.ricard@st.com> Signed-off-by: Peter Huewe <peterhuewe@gmx.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/char')
-rw-r--r--drivers/char/tpm/tpm_i2c_stm_st33.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/char/tpm/tpm_i2c_stm_st33.c b/drivers/char/tpm/tpm_i2c_stm_st33.c
index 4669e3713428..7d1c540fa26a 100644
--- a/drivers/char/tpm/tpm_i2c_stm_st33.c
+++ b/drivers/char/tpm/tpm_i2c_stm_st33.c
@@ -487,7 +487,7 @@ static int tpm_stm_i2c_send(struct tpm_chip *chip, unsigned char *buf,
if (burstcnt < 0)
return burstcnt;
size = min_t(int, len - i - 1, burstcnt);
- ret = I2C_WRITE_DATA(client, TPM_DATA_FIFO, buf, size);
+ ret = I2C_WRITE_DATA(client, TPM_DATA_FIFO, buf + i, size);
if (ret < 0)
goto out_err;