aboutsummaryrefslogtreecommitdiff
path: root/drivers/char/tpm/tpm_i2c_stm_st33.c
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2014-02-10 17:37:43 +0000
committerMark Brown <broonie@linaro.org>2014-02-10 17:37:43 +0000
commit4b9c8ddadce3ec70fa5d93875adeda861b21c84e (patch)
tree6ed53e819e5c763f751ff968a650b236d2d02545 /drivers/char/tpm/tpm_i2c_stm_st33.c
parent51ad557e21b8713f3abc286c14bca4ed01b8e56d (diff)
parent1569265782ef26ed77ce45ebeb0676f11d4c114a (diff)
Merge tag 'v3.10.29' into linux-linaro-lsk
This is the 3.10.29 stable release
Diffstat (limited to 'drivers/char/tpm/tpm_i2c_stm_st33.c')
-rw-r--r--drivers/char/tpm/tpm_i2c_stm_st33.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/char/tpm/tpm_i2c_stm_st33.c b/drivers/char/tpm/tpm_i2c_stm_st33.c
index 5bb8e2ddd3b..156bd3c7277 100644
--- a/drivers/char/tpm/tpm_i2c_stm_st33.c
+++ b/drivers/char/tpm/tpm_i2c_stm_st33.c
@@ -410,6 +410,8 @@ static int recv_data(struct tpm_chip *chip, u8 *buf, size_t count)
&chip->vendor.read_queue)
== 0) {
burstcnt = get_burstcount(chip);
+ if (burstcnt < 0)
+ return burstcnt;
len = min_t(int, burstcnt, count - size);
I2C_READ_DATA(client, TPM_DATA_FIFO, buf + size, len);
size += len;
@@ -451,7 +453,8 @@ static irqreturn_t tpm_ioserirq_handler(int irq, void *dev_id)
static int tpm_stm_i2c_send(struct tpm_chip *chip, unsigned char *buf,
size_t len)
{
- u32 status, burstcnt = 0, i, size;
+ u32 status, i, size;
+ int burstcnt = 0;
int ret;
u8 data;
struct i2c_client *client;
@@ -482,6 +485,8 @@ static int tpm_stm_i2c_send(struct tpm_chip *chip, unsigned char *buf,
for (i = 0; i < len - 1;) {
burstcnt = get_burstcount(chip);
+ if (burstcnt < 0)
+ return burstcnt;
size = min_t(int, len - i - 1, burstcnt);
ret = I2C_WRITE_DATA(client, TPM_DATA_FIFO, buf, size);
if (ret < 0)