Message ID | 20161121183109.GA18088@obsidianresearch.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Mon, Nov 21, 2016 at 11:31:09AM -0700, Jason Gunthorpe wrote: > This is a regression when this code was reworked and made the error > print unconditional. The original code deliberately suppressed printing > of the first error message so it could quietly sense > TPM_ERR_INVALID_POSTINIT. > > Fixes: a502feb67b47 ("tpm: Clean up reading of timeout and duration capabilities") > Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> Thanks for spotting this out. I'll apply this tomorrow (i.e. not tonight) as it does not endager stability in anyway as I test the other fixes. Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> /Jarkko > --- > drivers/char/tpm/tpm-interface.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c > index a2688ac2b48f3c..c90f4f6d7871be 100644 > --- a/drivers/char/tpm/tpm-interface.c > +++ b/drivers/char/tpm/tpm-interface.c > @@ -523,8 +523,7 @@ int tpm_get_timeouts(struct tpm_chip *chip) > return 0; > } > > - rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, > - "attempting to determine the timeouts"); > + rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, NULL); > if (rc == TPM_ERR_INVALID_POSTINIT) { > /* The TPM is not started, we are the first to talk to it. > Execute a startup command. */ > @@ -535,8 +534,12 @@ int tpm_get_timeouts(struct tpm_chip *chip) > rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, > "attempting to determine the timeouts"); > } > - if (rc) > + if (rc) { > + dev_err(&chip->dev, > + "A TPM error (%zd) occurred attempting to determine the timeouts\n", > + rc); > return rc; > + } > > old_timeout[0] = be32_to_cpu(cap.timeout.a); > old_timeout[1] = be32_to_cpu(cap.timeout.b); > -- > 2.1.4 -- To unsubscribe from this list: send the line "unsubscribe linux-security-module" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Nov 21, 2016 at 10:42:11PM +0200, Jarkko Sakkinen wrote: > On Mon, Nov 21, 2016 at 11:31:09AM -0700, Jason Gunthorpe wrote: > > This is a regression when this code was reworked and made the error > > print unconditional. The original code deliberately suppressed printing > > of the first error message so it could quietly sense > > TPM_ERR_INVALID_POSTINIT. > > > > Fixes: a502feb67b47 ("tpm: Clean up reading of timeout and duration capabilities") > > Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> > > Thanks for spotting this out. I'll apply this tomorrow (i.e. not > tonight) as it does not endager stability in anyway as I test the > other fixes. > > Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Hey Jarkko, I couldn't find this patch in your trees and it didn't make 4.10-rc1, can you please pick it up? https://patchwork.kernel.org/patch/9439931/ > /Jarkko > > > drivers/char/tpm/tpm-interface.c | 9 ++++++--- > > 1 file changed, 6 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c > > index a2688ac2b48f3c..c90f4f6d7871be 100644 > > +++ b/drivers/char/tpm/tpm-interface.c > > @@ -523,8 +523,7 @@ int tpm_get_timeouts(struct tpm_chip *chip) > > return 0; > > } > > > > - rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, > > - "attempting to determine the timeouts"); > > + rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, NULL); > > if (rc == TPM_ERR_INVALID_POSTINIT) { > > /* The TPM is not started, we are the first to talk to it. > > Execute a startup command. */ > > @@ -535,8 +534,12 @@ int tpm_get_timeouts(struct tpm_chip *chip) > > rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, > > "attempting to determine the timeouts"); > > } > > - if (rc) > > + if (rc) { > > + dev_err(&chip->dev, > > + "A TPM error (%zd) occurred attempting to determine the timeouts\n", > > + rc); > > return rc; > > + } > > > > old_timeout[0] = be32_to_cpu(cap.timeout.a); > > old_timeout[1] = be32_to_cpu(cap.timeout.b);
On Fri, Jan 06, 2017 at 02:25:51PM -0700, Jason Gunthorpe wrote: > On Mon, Nov 21, 2016 at 10:42:11PM +0200, Jarkko Sakkinen wrote: > > On Mon, Nov 21, 2016 at 11:31:09AM -0700, Jason Gunthorpe wrote: > > > This is a regression when this code was reworked and made the error > > > print unconditional. The original code deliberately suppressed printing > > > of the first error message so it could quietly sense > > > TPM_ERR_INVALID_POSTINIT. > > > > > > Fixes: a502feb67b47 ("tpm: Clean up reading of timeout and duration capabilities") > > > Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> > > > > Thanks for spotting this out. I'll apply this tomorrow (i.e. not > > tonight) as it does not endager stability in anyway as I test the > > other fixes. > > > > Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > Hey Jarkko, I couldn't find this patch in your trees and it didn't > make 4.10-rc1, can you please pick it up? > > https://patchwork.kernel.org/patch/9439931/ My bad. It's applied now. Can you check that everything looks good and I'll ask James to take the fixes that I have to 4.10? /Jarkko > > > /Jarkko > > > > > drivers/char/tpm/tpm-interface.c | 9 ++++++--- > > > 1 file changed, 6 insertions(+), 3 deletions(-) > > > > > > diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c > > > index a2688ac2b48f3c..c90f4f6d7871be 100644 > > > +++ b/drivers/char/tpm/tpm-interface.c > > > @@ -523,8 +523,7 @@ int tpm_get_timeouts(struct tpm_chip *chip) > > > return 0; > > > } > > > > > > - rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, > > > - "attempting to determine the timeouts"); > > > + rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, NULL); > > > if (rc == TPM_ERR_INVALID_POSTINIT) { > > > /* The TPM is not started, we are the first to talk to it. > > > Execute a startup command. */ > > > @@ -535,8 +534,12 @@ int tpm_get_timeouts(struct tpm_chip *chip) > > > rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, > > > "attempting to determine the timeouts"); > > > } > > > - if (rc) > > > + if (rc) { > > > + dev_err(&chip->dev, > > > + "A TPM error (%zd) occurred attempting to determine the timeouts\n", > > > + rc); > > > return rc; > > > + } > > > > > > old_timeout[0] = be32_to_cpu(cap.timeout.a); > > > old_timeout[1] = be32_to_cpu(cap.timeout.b); > > -- > Jason Gunthorpe <jgunthorpe@obsidianresearch.com> (780)4406067x832 > Chief Technology Officer, Obsidian Research Corp Edmonton, Canada -- To unsubscribe from this list: send the line "unsubscribe linux-security-module" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c index a2688ac2b48f3c..c90f4f6d7871be 100644 --- a/drivers/char/tpm/tpm-interface.c +++ b/drivers/char/tpm/tpm-interface.c @@ -523,8 +523,7 @@ int tpm_get_timeouts(struct tpm_chip *chip) return 0; } - rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, - "attempting to determine the timeouts"); + rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, NULL); if (rc == TPM_ERR_INVALID_POSTINIT) { /* The TPM is not started, we are the first to talk to it. Execute a startup command. */ @@ -535,8 +534,12 @@ int tpm_get_timeouts(struct tpm_chip *chip) rc = tpm_getcap(chip, TPM_CAP_PROP_TIS_TIMEOUT, &cap, "attempting to determine the timeouts"); } - if (rc) + if (rc) { + dev_err(&chip->dev, + "A TPM error (%zd) occurred attempting to determine the timeouts\n", + rc); return rc; + } old_timeout[0] = be32_to_cpu(cap.timeout.a); old_timeout[1] = be32_to_cpu(cap.timeout.b);
This is a regression when this code was reworked and made the error print unconditional. The original code deliberately suppressed printing of the first error message so it could quietly sense TPM_ERR_INVALID_POSTINIT. Fixes: a502feb67b47 ("tpm: Clean up reading of timeout and duration capabilities") Signed-off-by: Jason Gunthorpe <jgunthorpe@obsidianresearch.com> --- drivers/char/tpm/tpm-interface.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)