tpm: don't return bool from update_timeouts
authorJerry Snitselaar <jsnitsel@redhat.com>
Wed, 30 Jan 2019 22:06:58 +0000 (15:06 -0700)
committerJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Wed, 13 Feb 2019 07:47:01 +0000 (09:47 +0200)
Set tpm_chip->timeouts_adjusted directly in the update_timeouts
code instead of returning bool. In case of tpm read failing
print warning that the read failed and continue on.

Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
drivers/char/tpm/tpm1-cmd.c
drivers/char/tpm/tpm_tis_core.c
include/linux/tpm.h

index 6f30633..bda9a16 100644 (file)
@@ -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 */
index bb0c2e1..c6b0c6d 100644 (file)
@@ -521,35 +521,38 @@ 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 void 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);
 
        rc = tpm_tis_read32(priv, TPM_DID_VID(0), &did_vid);
-       if (rc < 0)
+       if (rc < 0) {
+               dev_warn(&chip->dev, "%s: failed to read did_vid: %d\n",
+                        __func__, rc);
                goto out;
+       }
 
        for (i = 0; i != ARRAY_SIZE(vendor_timeout_overrides); i++) {
                if (vendor_timeout_overrides[i].did_vid != did_vid)
                        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);
 
-       return rc;
+       return;
 }
 
 /*
index b49a55c..13563b8 100644 (file)
@@ -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,
+       void (*update_timeouts)(struct tpm_chip *chip,
                                unsigned long *timeout_cap);
        int (*go_idle)(struct tpm_chip *chip);
        int (*cmd_ready)(struct tpm_chip *chip);