diff mbox series

[RFC,1/1] tpm: don't return bool from update_timeouts

Message ID 20190129174145.1482-2-jsnitsel@redhat.com (mailing list archive)
State New, archived
Headers show
Series tpm: don't return bool from update_timeouts | expand

Commit Message

Jerry Snitselaar Jan. 29, 2019, 5:41 p.m. UTC
Set tpm_chip->timeouts_adjusted directly in the update_timeouts
code instead of returning bool. Return rc of tpm read instead,
which can be return an error in the case of the spi driver.

Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
---
 drivers/char/tpm/tpm1-cmd.c     | 3 +--
 drivers/char/tpm/tpm_tis_core.c | 8 ++++----
 include/linux/tpm.h             | 2 +-
 3 files changed, 6 insertions(+), 7 deletions(-)

Comments

Jarkko Sakkinen Jan. 29, 2019, 7:22 p.m. UTC | #1
On Tue, Jan 29, 2019 at 10:41:45AM -0700, Jerry Snitselaar wrote:
> Set tpm_chip->timeouts_adjusted directly in the update_timeouts
> code instead of returning bool. Return rc of tpm read instead,
> which can be return an error in the case of the spi driver.
> 
> Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>

Couple of remarks:

1. Shouldn't it then be just void?
2. Why do we even need timeout_adjusted in struct tpm_chip [1]?

[1] Only used locally in tpm1_get_timeouts().

/Jarkko
Jerry Snitselaar Jan. 29, 2019, 7:50 p.m. UTC | #2
On Tue Jan 29 19, Jarkko Sakkinen wrote:
>On Tue, Jan 29, 2019 at 10:41:45AM -0700, Jerry Snitselaar wrote:
>> Set tpm_chip->timeouts_adjusted directly in the update_timeouts
>> code instead of returning bool. Return rc of tpm read instead,
>> which can be return an error in the case of the spi driver.
>>
>> Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
>
>Couple of remarks:
>
>1. Shouldn't it then be just void?

Yes I think if we don't really care about the tpm read failing
it can just be void, and print out a warning when the read fail
occurs.

>2. Why do we even need timeout_adjusted in struct tpm_chip [1]?

It gets used by timeouts_show in tpm-sysfs.c as well.

>
>[1] Only used locally in tpm1_get_timeouts().
>
>/Jarkko
Jarkko Sakkinen Jan. 29, 2019, 9:12 p.m. UTC | #3
On Tue, Jan 29, 2019 at 12:50:31PM -0700, Jerry Snitselaar wrote:
> On Tue Jan 29 19, Jarkko Sakkinen wrote:
> > On Tue, Jan 29, 2019 at 10:41:45AM -0700, Jerry Snitselaar wrote:
> > > Set tpm_chip->timeouts_adjusted directly in the update_timeouts
> > > code instead of returning bool. Return rc of tpm read instead,
> > > which can be return an error in the case of the spi driver.
> > > 
> > > Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
> > 
> > Couple of remarks:
> > 
> > 1. Shouldn't it then be just void?
> 
> Yes I think if we don't really care about the tpm read failing
> it can just be void, and print out a warning when the read fail
> occurs.

I don't think we care.

> > 2. Why do we even need timeout_adjusted in struct tpm_chip [1]?
> 
> It gets used by timeouts_show in tpm-sysfs.c as well.

Ugh, dejavu :-) I've made this same false remark at least once
before.

/Jarkko
diff mbox series

Patch

diff --git a/drivers/char/tpm/tpm1-cmd.c b/drivers/char/tpm/tpm1-cmd.c
index 6f306338953b..bda9a16b44f6 100644
--- a/drivers/char/tpm/tpm1-cmd.c
+++ b/drivers/char/tpm/tpm1-cmd.c
@@ -380,8 +380,7 @@  int tpm1_get_timeouts(struct tpm_chip *chip)
 	 * of misreporting.
 	 */
 	if (chip->ops->update_timeouts)
-		chip->timeout_adjusted =
-			chip->ops->update_timeouts(chip, timeout_eff);
+		chip->ops->update_timeouts(chip, timeout_eff);
 
 	if (!chip->timeout_adjusted) {
 		/* Restore default if chip reported 0 */
diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c
index bf7e49cfa643..57c5b6712563 100644
--- a/drivers/char/tpm/tpm_tis_core.c
+++ b/drivers/char/tpm/tpm_tis_core.c
@@ -521,13 +521,15 @@  static const struct tis_vendor_timeout_override vendor_timeout_overrides[] = {
 			(TIS_SHORT_TIMEOUT*1000), (TIS_SHORT_TIMEOUT*1000) } },
 };
 
-static bool tpm_tis_update_timeouts(struct tpm_chip *chip,
+static int tpm_tis_update_timeouts(struct tpm_chip *chip,
 				    unsigned long *timeout_cap)
 {
 	struct tpm_tis_data *priv = dev_get_drvdata(&chip->dev);
 	int i, rc;
 	u32 did_vid;
 
+	chip->timeout_adjusted = false;
+
 	if (chip->ops->clk_enable != NULL)
 		chip->ops->clk_enable(chip, true);
 
@@ -540,11 +542,9 @@  static bool tpm_tis_update_timeouts(struct tpm_chip *chip,
 			continue;
 		memcpy(timeout_cap, vendor_timeout_overrides[i].timeout_us,
 		       sizeof(vendor_timeout_overrides[i].timeout_us));
-		rc = true;
+		chip->timeout_adjusted = true;
 	}
 
-	rc = false;
-
 out:
 	if (chip->ops->clk_enable != NULL)
 		chip->ops->clk_enable(chip, false);
diff --git a/include/linux/tpm.h b/include/linux/tpm.h
index b49a55cf775f..d18df4b6247f 100644
--- a/include/linux/tpm.h
+++ b/include/linux/tpm.h
@@ -41,7 +41,7 @@  struct tpm_class_ops {
 	int (*send) (struct tpm_chip *chip, u8 *buf, size_t len);
 	void (*cancel) (struct tpm_chip *chip);
 	u8 (*status) (struct tpm_chip *chip);
-	bool (*update_timeouts)(struct tpm_chip *chip,
+	int (*update_timeouts)(struct tpm_chip *chip,
 				unsigned long *timeout_cap);
 	int (*go_idle)(struct tpm_chip *chip);
 	int (*cmd_ready)(struct tpm_chip *chip);