linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/6] tpm/tpm_ppi: Do not compare strcmp(a,b) == -1
       [not found] <trinity-0ea948ed-45da-4711-91da-0d251d630d89-1383412993117@3capp-gmx-bs02>
@ 2013-11-02 17:24 ` Peter Huewe
  2013-11-02 17:24   ` [PATCH 2/6] tpm/tpm_ppi: Check return value of acpi_get_name Peter Huewe
                     ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Peter Huewe @ 2013-11-02 17:24 UTC (permalink / raw)
  To: james.l.morris, tpmdd-devel, adlai
  Cc: linux-kernel, Peter Huewe, stable, Peter Huewe

From: Peter Huewe <PeterHuewe@gmx.de>

Depending on the implementation strcmp might return the difference between
two strings not only -1,0,1 consequently
 if (strcmp (a,b) == -1)
might lead to taking the wrong branch

-> compare with < 0  instead,
which in any case is more canonical.

Cc: stable@vger.kernel.org
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
 drivers/char/tpm/tpm_ppi.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/char/tpm/tpm_ppi.c b/drivers/char/tpm/tpm_ppi.c
index 8e562dc..18c5810 100644
--- a/drivers/char/tpm/tpm_ppi.c
+++ b/drivers/char/tpm/tpm_ppi.c
@@ -169,7 +169,7 @@ static ssize_t tpm_store_ppi_request(struct device *dev,
 	 * is updated with function index from SUBREQ to SUBREQ2 since PPI
 	 * version 1.1
 	 */
-	if (strcmp(version, "1.1") == -1)
+	if (strcmp(version, "1.1") < 0)
 		params[2].integer.value = TPM_PPI_FN_SUBREQ;
 	else
 		params[2].integer.value = TPM_PPI_FN_SUBREQ2;
@@ -179,7 +179,7 @@ static ssize_t tpm_store_ppi_request(struct device *dev,
 	 * string/package type. For PPI version 1.0 and 1.1, use buffer type
 	 * for compatibility, and use package type since 1.2 according to spec.
 	 */
-	if (strcmp(version, "1.2") == -1) {
+	if (strcmp(version, "1.2") < 0) {
 		params[3].type = ACPI_TYPE_BUFFER;
 		params[3].buffer.length = sizeof(req);
 		sscanf(buf, "%d", &req);
@@ -245,7 +245,7 @@ static ssize_t tpm_show_ppi_transition_action(struct device *dev,
 	 * (e.g. Capella with PPI 1.0) need integer/string/buffer type, so for
 	 * compatibility, define params[3].type as buffer, if PPI version < 1.2
 	 */
-	if (strcmp(version, "1.2") == -1) {
+	if (strcmp(version, "1.2") < 0) {
 		params[3].type = ACPI_TYPE_BUFFER;
 		params[3].buffer.length =  0;
 		params[3].buffer.pointer = NULL;
@@ -387,7 +387,7 @@ static ssize_t show_ppi_operations(char *buf, u32 start, u32 end)
 	kfree(output.pointer);
 	output.length = ACPI_ALLOCATE_BUFFER;
 	output.pointer = NULL;
-	if (strcmp(version, "1.2") == -1)
+	if (strcmp(version, "1.2") < 0)
 		return -EPERM;
 
 	params[2].integer.value = TPM_PPI_FN_GETOPR;
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/6] tpm/tpm_ppi: Check return value of acpi_get_name
  2013-11-02 17:24 ` [PATCH 1/6] tpm/tpm_ppi: Do not compare strcmp(a,b) == -1 Peter Huewe
@ 2013-11-02 17:24   ` Peter Huewe
  2013-11-02 17:24   ` [PATCH 3/6] tpm/tpm_i2c_stm_st33: Check return code of get_burstcount Peter Huewe
                     ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Peter Huewe @ 2013-11-02 17:24 UTC (permalink / raw)
  To: james.l.morris, tpmdd-devel, adlai
  Cc: linux-kernel, Peter Huewe, stable, Peter Huewe

From: Peter Huewe <PeterHuewe@gmx.de>

If
 status = acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);
fails for whatever reason and does not return AE_OK
 if (strstr(buffer.pointer, context) != NULL) {
does dereference a null pointer.

-> Check the return value and return the status to the caller

Found by coverity
Cc: stable@vger.kernel.org
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
 drivers/char/tpm/tpm_ppi.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/drivers/char/tpm/tpm_ppi.c b/drivers/char/tpm/tpm_ppi.c
index 18c5810..6ac9d27 100644
--- a/drivers/char/tpm/tpm_ppi.c
+++ b/drivers/char/tpm/tpm_ppi.c
@@ -30,6 +30,9 @@ static acpi_status ppi_callback(acpi_handle handle, u32 level, void *context,
 	acpi_status status;
 	struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
 	status = acpi_get_name(handle, ACPI_FULL_PATHNAME, &buffer);
+	if (ACPI_FAILURE(status))
+		return status;
+
 	if (strstr(buffer.pointer, context) != NULL) {
 		*return_value = handle;
 		kfree(buffer.pointer);
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/6] tpm/tpm_i2c_stm_st33: Check return code of get_burstcount
  2013-11-02 17:24 ` [PATCH 1/6] tpm/tpm_ppi: Do not compare strcmp(a,b) == -1 Peter Huewe
  2013-11-02 17:24   ` [PATCH 2/6] tpm/tpm_ppi: Check return value of acpi_get_name Peter Huewe
@ 2013-11-02 17:24   ` Peter Huewe
  2013-11-02 17:24   ` [PATCH 4/6] tpm/tpm_ibmvtpm: fix unreachable code warning (smatch warning) Peter Huewe
                     ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Peter Huewe @ 2013-11-02 17:24 UTC (permalink / raw)
  To: james.l.morris, tpmdd-devel, adlai
  Cc: linux-kernel, Peter Huewe, stable, Peter Huewe

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 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 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.7.5.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 4/6] tpm/tpm_ibmvtpm: fix unreachable code warning (smatch warning)
  2013-11-02 17:24 ` [PATCH 1/6] tpm/tpm_ppi: Do not compare strcmp(a,b) == -1 Peter Huewe
  2013-11-02 17:24   ` [PATCH 2/6] tpm/tpm_ppi: Check return value of acpi_get_name Peter Huewe
  2013-11-02 17:24   ` [PATCH 3/6] tpm/tpm_i2c_stm_st33: Check return code of get_burstcount Peter Huewe
@ 2013-11-02 17:24   ` Peter Huewe
  2013-11-02 17:25   ` [PATCH 5/6] tpm/tpm_i2c_atmel: fix coccinelle warnings Peter Huewe
  2013-11-02 17:25   ` [PATCH 6/6] tpm: MAINTAINERS: Cleanup TPM Maintainers file Peter Huewe
  4 siblings, 0 replies; 6+ messages in thread
From: Peter Huewe @ 2013-11-02 17:24 UTC (permalink / raw)
  To: james.l.morris, tpmdd-devel, adlai; +Cc: linux-kernel, Peter Huewe, Peter Huewe

From: Peter Huewe <PeterHuewe@gmx.de>

smatch complains:
/data/data-old/linux-2.6/drivers/char/tpm/tpm_ibmvtpm.c:510
ibmvtpm_crq_process() info: ignoring unreachable code.

-> The return is not necessary here, remove it

Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
 drivers/char/tpm/tpm_ibmvtpm.c |    1 -
 1 files changed, 0 insertions(+), 1 deletions(-)

diff --git a/drivers/char/tpm/tpm_ibmvtpm.c b/drivers/char/tpm/tpm_ibmvtpm.c
index 2783a42..cab8d09 100644
--- a/drivers/char/tpm/tpm_ibmvtpm.c
+++ b/drivers/char/tpm/tpm_ibmvtpm.c
@@ -507,7 +507,6 @@ static void ibmvtpm_crq_process(struct ibmvtpm_crq *crq,
 			dev_err(ibmvtpm->dev, "Unknown crq message type: %d\n", crq->msg);
 			return;
 		}
-		return;
 	case IBMVTPM_VALID_CMD:
 		switch (crq->msg) {
 		case VTPM_GET_RTCE_BUFFER_SIZE_RES:
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 5/6] tpm/tpm_i2c_atmel: fix coccinelle warnings
  2013-11-02 17:24 ` [PATCH 1/6] tpm/tpm_ppi: Do not compare strcmp(a,b) == -1 Peter Huewe
                     ` (2 preceding siblings ...)
  2013-11-02 17:24   ` [PATCH 4/6] tpm/tpm_ibmvtpm: fix unreachable code warning (smatch warning) Peter Huewe
@ 2013-11-02 17:25   ` Peter Huewe
  2013-11-02 17:25   ` [PATCH 6/6] tpm: MAINTAINERS: Cleanup TPM Maintainers file Peter Huewe
  4 siblings, 0 replies; 6+ messages in thread
From: Peter Huewe @ 2013-11-02 17:25 UTC (permalink / raw)
  To: james.l.morris, tpmdd-devel, adlai
  Cc: linux-kernel, Fengguang Wu, Jason Gunthorpe, Peter Huewe

From: Fengguang Wu <fengguang.wu@intel.com>

drivers/char/tpm/tpm_i2c_atmel.c:178:8-9: WARNING: return of 0/1 in function 'i2c_atmel_req_canceled' with return type bool

 Return statements in functions returning bool should use
 true/false instead of 1/0.
Generated by: coccinelle/misc/boolreturn.cocci

CC: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
CC: Peter Huewe <peterhuewe@gmx.de>
Acked-By: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Signed-off-by: Fengguang Wu <fengguang.wu@intel.com>
Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
 drivers/char/tpm/tpm_i2c_atmel.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/char/tpm/tpm_i2c_atmel.c b/drivers/char/tpm/tpm_i2c_atmel.c
index c3cd7fe..af6805b 100644
--- a/drivers/char/tpm/tpm_i2c_atmel.c
+++ b/drivers/char/tpm/tpm_i2c_atmel.c
@@ -175,7 +175,7 @@ static struct attribute_group i2c_atmel_attr_grp = {
 
 static bool i2c_atmel_req_canceled(struct tpm_chip *chip, u8 status)
 {
-	return 0;
+	return false;
 }
 
 static const struct tpm_vendor_specific i2c_atmel = {
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 6/6] tpm: MAINTAINERS: Cleanup TPM Maintainers file
  2013-11-02 17:24 ` [PATCH 1/6] tpm/tpm_ppi: Do not compare strcmp(a,b) == -1 Peter Huewe
                     ` (3 preceding siblings ...)
  2013-11-02 17:25   ` [PATCH 5/6] tpm/tpm_i2c_atmel: fix coccinelle warnings Peter Huewe
@ 2013-11-02 17:25   ` Peter Huewe
  4 siblings, 0 replies; 6+ messages in thread
From: Peter Huewe @ 2013-11-02 17:25 UTC (permalink / raw)
  To: james.l.morris, tpmdd-devel, adlai; +Cc: linux-kernel, Peter Huewe, Peter Huewe

From: Peter Huewe <PeterHuewe@gmx.de>

- removing stale/inactive maintainers
- removing stale/outdated website
- regrouped maintainers

Signed-off-by: Peter Huewe <peterhuewe@gmx.de>
---
 MAINTAINERS |    8 ++------
 1 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/MAINTAINERS b/MAINTAINERS
index 936adb4..0f42b97 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -8473,14 +8473,10 @@ S:	Odd fixes
 F:	drivers/media/usb/tm6000/
 
 TPM DEVICE DRIVER
-M:	Leonidas Da Silva Barbosa <leosilva@linux.vnet.ibm.com>
-M:	Ashley Lai <ashley@ashleylai.com>
 M:	Peter Huewe <peterhuewe@gmx.de>
-M:	Rajiv Andrade <mail@srajiv.net>
-W:	http://tpmdd.sourceforge.net
+M:	Ashley Lai <ashley@ashleylai.com>
 M:	Marcel Selhorst <tpmdd@selhorst.net>
-M:	Sirrix AG <tpmdd@sirrix.com>
-W:	http://www.sirrix.com
+W:	http://tpmdd.sourceforge.net
 L:	tpmdd-devel@lists.sourceforge.net (moderated for non-subscribers)
 S:	Maintained
 F:	drivers/char/tpm/
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-11-02 17:25 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <trinity-0ea948ed-45da-4711-91da-0d251d630d89-1383412993117@3capp-gmx-bs02>
2013-11-02 17:24 ` [PATCH 1/6] tpm/tpm_ppi: Do not compare strcmp(a,b) == -1 Peter Huewe
2013-11-02 17:24   ` [PATCH 2/6] tpm/tpm_ppi: Check return value of acpi_get_name Peter Huewe
2013-11-02 17:24   ` [PATCH 3/6] tpm/tpm_i2c_stm_st33: Check return code of get_burstcount Peter Huewe
2013-11-02 17:24   ` [PATCH 4/6] tpm/tpm_ibmvtpm: fix unreachable code warning (smatch warning) Peter Huewe
2013-11-02 17:25   ` [PATCH 5/6] tpm/tpm_i2c_atmel: fix coccinelle warnings Peter Huewe
2013-11-02 17:25   ` [PATCH 6/6] tpm: MAINTAINERS: Cleanup TPM Maintainers file Peter Huewe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).