mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Peter Huewe <peterhuewe@gmx.de>
To: James Morris <jmorris@namei.org>
Cc: Ashley Lai <ashley@ashleylai.com>,
	tpmdd-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org,
	Peter Huewe <PeterHuewe@gmx.de>,
	stable@vger.kernel.org, Peter Huewe <peterhuewe@gmx.de>
Subject: [PATCH 03/15] tpm/tpm_i2c_stm_st33: Check return code of get_burstcount
Date: Sat,  4 Jan 2014 03:44:37 +0100	[thread overview]
Message-ID: <1388803489-13258-3-git-send-email-peterhuewe@gmx.de> (raw)
In-Reply-To: <1388803489-13258-1-git-send-email-peterhuewe@gmx.de>

From: Peter Huewe <PeterHuewe@gmx.de>

The 'get_burstcount' function can in some circumstances 'return -EBUSY' which
in tpm_stm_i2c_send is stored in an 'u32 burstcnt'
thus converting the signed value into an unsigned value, resulting
in 'burstcnt' being huge.
Changing the type to u32 only does not solve the problem as the signed
value is converted to an unsigned in I2C_WRITE_DATA, resulting in the
same effect.

Thus
-> Change type of burstcnt to u32 (the return type of get_burstcount)
-> Add a check for the return value of 'get_burstcount' and propagate a
potential error.

This makes also sense in the 'I2C_READ_DATA' case, where the there is no
signed/unsigned conversion.

found by coverity
Cc: stable@vger.kernel.org
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
 drivers/char/tpm/tpm_i2c_stm_st33.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/char/tpm/tpm_i2c_stm_st33.c b/drivers/char/tpm/tpm_i2c_stm_st33.c
index a0d6ceb5..cf68403 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)
-- 
1.8.1.5


  parent reply	other threads:[~2014-01-04  2:43 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-04  2:34 TPM Changes for 3.14 Peter Hüwe
2014-01-04  2:44 ` [PATCH 01/15] tpm/tpm_ppi: Do not compare strcmp(a,b) == -1 Peter Huewe
2014-01-04  2:44   ` [PATCH 02/15] tpm/tpm_ppi: Check return value of acpi_get_name Peter Huewe
2014-01-04  2:44   ` Peter Huewe [this message]
2014-01-04  2:44   ` [PATCH 04/15] tpm/tpm_ibmvtpm: fix unreachable code warning (smatch warning) Peter Huewe
2014-01-04  2:44   ` [PATCH 05/15] tpm/tpm_i2c_atmel: fix coccinelle warnings Peter Huewe
2014-01-04  2:44   ` [PATCH 06/15] tpm: MAINTAINERS: Cleanup TPM Maintainers file Peter Huewe
2014-01-04  2:44   ` [PATCH 07/15] char: tpm: nuvoton: remove unused variable Peter Huewe
2014-01-04  2:44   ` [PATCH 08/15] tpm: Pull everything related to /dev/tpmX into tpm-dev.c Peter Huewe
2014-01-04  2:44   ` [PATCH 09/15] tpm: Move sysfs functions from tpm-interface to tpm-sysfs Peter Huewe
2014-01-04  2:44   ` [PATCH 10/15] tpm: Pull all driver sysfs code into tpm-sysfs.c Peter Huewe
2014-01-04  2:44   ` [PATCH 11/15] tpm: Create a tpm_class_ops structure and use it in the drivers Peter Huewe
2014-01-04  2:44   ` [PATCH 12/15] tpm: Use the ops structure instead of a copy in tpm_vendor_specific Peter Huewe
2014-01-04  2:44   ` [PATCH 13/15] tpm: Make tpm-dev allocate a per-file structure Peter Huewe
2014-01-04  2:44   ` [PATCH 14/15] tpm: tpm_tis: Fix compile problems with CONFIG_PM_SLEEP/CONFIG_PNP Peter Huewe
2014-01-04  2:44   ` [PATCH 15/15] tpm/tpm-sysfs: active_show() can be static Peter Huewe
2014-01-06  2:22 ` TPM Changes for 3.14 James Morris
2014-01-06  3:24   ` Peter Hüwe
2014-01-06 11:28     ` James Morris
2014-01-06 13:44       ` [GIT PULL]TPM " Peter Hüwe
2014-01-06 14:31         ` James Morris

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1388803489-13258-3-git-send-email-peterhuewe@gmx.de \
    --to=peterhuewe@gmx.de \
    --cc=ashley@ashleylai.com \
    --cc=jmorris@namei.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tpmdd-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®