Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1631777 > unrolled thread

[PATCH] tpm: print tpm error code in hex for TPM2.0 devices

Started byJerry Snitselaar <jsnitsel@redhat.com>
First post2017-04-27 00:50 +0200
Last post2017-04-29 13:20 +0200
Articles 4 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH] tpm: print tpm error code in hex for TPM2.0 devices Jerry Snitselaar <jsnitsel@redhat.com> - 2017-04-27 00:50 +0200
    Re: [PATCH] tpm: print tpm error code in hex for TPM2.0 devices Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> - 2017-04-28 14:10 +0200
      Re: [PATCH] tpm: print tpm error code in hex for TPM2.0 devices Jerry Snitselaar <jsnitsel@redhat.com> - 2017-04-28 19:20 +0200
        Re: [PATCH] tpm: print tpm error code in hex for TPM2.0 devices Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> - 2017-04-29 13:20 +0200

#1631777 — [PATCH] tpm: print tpm error code in hex for TPM2.0 devices

FromJerry Snitselaar <jsnitsel@redhat.com>
Date2017-04-27 00:50 +0200
Subject[PATCH] tpm: print tpm error code in hex for TPM2.0 devices
Message-ID<tADV0-jp-13@gated-at.bofh.it>
For easier decoding, output the error code returned
from the tpm device in hex when the device is TPM2.0.

Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Cc: Peter Huewe <peterhuewe@gmx.de>
Cc: Marcel Selhorst <tpmdd@selhorst.net>
Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
Reported-by: Ken Goldman <kgoldman@us.ibm.com>
Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
---
 drivers/char/tpm/tpm-interface.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
index bd2128e0b56c..b6c67eef9ae7 100644
--- a/drivers/char/tpm/tpm-interface.c
+++ b/drivers/char/tpm/tpm-interface.c
@@ -453,9 +453,14 @@ ssize_t tpm_transmit_cmd(struct tpm_chip *chip, const void *buf,
 		return -EFAULT;
 
 	err = be32_to_cpu(header->return_code);
-	if (err != 0 && desc)
-		dev_err(&chip->dev, "A TPM error (%d) occurred %s\n", err,
-			desc);
+	if (err != 0 && desc) {
+		if (chip->flags & TPM_CHIP_FLAG_TPM2)
+			dev_err(&chip->dev, "A TPM 2.0 error (0x%x) occurred %s\n",
+				err, desc);
+		else
+			dev_err(&chip->dev, "A TPM error (%d) occurred %s\n",
+				err, desc);
+	}
 	if (err)
 		return err;
 
-- 
2.13.0.rc0.45.ge2cb6ab84

[toc] | [next] | [standalone]


#1632825

FromJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date2017-04-28 14:10 +0200
Message-ID<tBcSJ-75z-9@gated-at.bofh.it>
In reply to#1631777
On Wed, Apr 26, 2017 at 03:39:54PM -0700, Jerry Snitselaar wrote:
> For easier decoding, output the error code returned
> from the tpm device in hex when the device is TPM2.0.
> 
> Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
> Cc: Peter Huewe <peterhuewe@gmx.de>
> Cc: Marcel Selhorst <tpmdd@selhorst.net>
> Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
> Reported-by: Ken Goldman <kgoldman@us.ibm.com>
> Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
> ---
>  drivers/char/tpm/tpm-interface.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
> index bd2128e0b56c..b6c67eef9ae7 100644
> --- a/drivers/char/tpm/tpm-interface.c
> +++ b/drivers/char/tpm/tpm-interface.c
> @@ -453,9 +453,14 @@ ssize_t tpm_transmit_cmd(struct tpm_chip *chip, const void *buf,
>  		return -EFAULT;
>  
>  	err = be32_to_cpu(header->return_code);
> -	if (err != 0 && desc)
> -		dev_err(&chip->dev, "A TPM error (%d) occurred %s\n", err,
> -			desc);
> +	if (err != 0 && desc) {
> +		if (chip->flags & TPM_CHIP_FLAG_TPM2)
> +			dev_err(&chip->dev, "A TPM 2.0 error (0x%x) occurred %s\n",
> +				err, desc);
> +		else
> +			dev_err(&chip->dev, "A TPM error (%d) occurred %s\n",
> +				err, desc);
> +	}

Is there a reason for not to apply this also to TPM 1.2?

/Jarkko

>  	if (err)
>  		return err;
>  
> -- 
> 2.13.0.rc0.45.ge2cb6ab84
> 

[toc] | [prev] | [next] | [standalone]


#1633038

FromJerry Snitselaar <jsnitsel@redhat.com>
Date2017-04-28 19:20 +0200
Message-ID<tBhIK-22D-19@gated-at.bofh.it>
In reply to#1632825
On Fri Apr 28 17, Jarkko Sakkinen wrote:
>On Wed, Apr 26, 2017 at 03:39:54PM -0700, Jerry Snitselaar wrote:
>> For easier decoding, output the error code returned
>> from the tpm device in hex when the device is TPM2.0.
>>
>> Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
>> Cc: Peter Huewe <peterhuewe@gmx.de>
>> Cc: Marcel Selhorst <tpmdd@selhorst.net>
>> Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
>> Reported-by: Ken Goldman <kgoldman@us.ibm.com>
>> Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
>> ---
>>  drivers/char/tpm/tpm-interface.c | 11 ++++++++---
>>  1 file changed, 8 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
>> index bd2128e0b56c..b6c67eef9ae7 100644
>> --- a/drivers/char/tpm/tpm-interface.c
>> +++ b/drivers/char/tpm/tpm-interface.c
>> @@ -453,9 +453,14 @@ ssize_t tpm_transmit_cmd(struct tpm_chip *chip, const void *buf,
>>  		return -EFAULT;
>>
>>  	err = be32_to_cpu(header->return_code);
>> -	if (err != 0 && desc)
>> -		dev_err(&chip->dev, "A TPM error (%d) occurred %s\n", err,
>> -			desc);
>> +	if (err != 0 && desc) {
>> +		if (chip->flags & TPM_CHIP_FLAG_TPM2)
>> +			dev_err(&chip->dev, "A TPM 2.0 error (0x%x) occurred %s\n",
>> +				err, desc);
>> +		else
>> +			dev_err(&chip->dev, "A TPM error (%d) occurred %s\n",
>> +				err, desc);
>> +	}
>
>Is there a reason for not to apply this also to TPM 1.2?
>
>/Jarkko
>

The 2.0 spec lists the response codes in hex, while the 1.2 spec lists them
in decimal. Maybe something like the following instead?

index 158c1db83f05..1f433d56f53c 100644
--- a/drivers/char/tpm/tpm-interface.c
+++ b/drivers/char/tpm/tpm-interface.c
@@ -526,8 +526,8 @@ ssize_t tpm_transmit_cmd(struct tpm_chip *chip, struct tpm_space *space,
 
        err = be32_to_cpu(header->return_code);
        if (err != 0 && desc)
-               dev_err(&chip->dev, "A TPM error (%d) occurred %s\n", err,
-                       desc);
+               dev_err(&chip->dev, "A TPM error (%d (0x%x)) occurred %s\n", err,
+                       err, desc);
        if (err)
                return err;


>>  	if (err)
>>  		return err;
>>
>> --
>> 2.13.0.rc0.45.ge2cb6ab84
>>

[toc] | [prev] | [next] | [standalone]


#1633289

FromJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Date2017-04-29 13:20 +0200
Message-ID<tByzT-5zE-11@gated-at.bofh.it>
In reply to#1633038
On Fri, Apr 28, 2017 at 10:18:09AM -0700, Jerry Snitselaar wrote:
> On Fri Apr 28 17, Jarkko Sakkinen wrote:
> > On Wed, Apr 26, 2017 at 03:39:54PM -0700, Jerry Snitselaar wrote:
> > > For easier decoding, output the error code returned
> > > from the tpm device in hex when the device is TPM2.0.
> > > 
> > > Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
> > > Cc: Peter Huewe <peterhuewe@gmx.de>
> > > Cc: Marcel Selhorst <tpmdd@selhorst.net>
> > > Cc: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
> > > Reported-by: Ken Goldman <kgoldman@us.ibm.com>
> > > Signed-off-by: Jerry Snitselaar <jsnitsel@redhat.com>
> > > ---
> > >  drivers/char/tpm/tpm-interface.c | 11 ++++++++---
> > >  1 file changed, 8 insertions(+), 3 deletions(-)
> > > 
> > > diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
> > > index bd2128e0b56c..b6c67eef9ae7 100644
> > > --- a/drivers/char/tpm/tpm-interface.c
> > > +++ b/drivers/char/tpm/tpm-interface.c
> > > @@ -453,9 +453,14 @@ ssize_t tpm_transmit_cmd(struct tpm_chip *chip, const void *buf,
> > >  		return -EFAULT;
> > > 
> > >  	err = be32_to_cpu(header->return_code);
> > > -	if (err != 0 && desc)
> > > -		dev_err(&chip->dev, "A TPM error (%d) occurred %s\n", err,
> > > -			desc);
> > > +	if (err != 0 && desc) {
> > > +		if (chip->flags & TPM_CHIP_FLAG_TPM2)
> > > +			dev_err(&chip->dev, "A TPM 2.0 error (0x%x) occurred %s\n",
> > > +				err, desc);
> > > +		else
> > > +			dev_err(&chip->dev, "A TPM error (%d) occurred %s\n",
> > > +				err, desc);
> > > +	}
> > 
> > Is there a reason for not to apply this also to TPM 1.2?
> > 
> > /Jarkko
> > 
> 
> The 2.0 spec lists the response codes in hex, while the 1.2 spec lists them
> in decimal. Maybe something like the following instead?

Ah. Well, I thinkthe original patch is fine then. 

Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>

/Jarkko

> 
> index 158c1db83f05..1f433d56f53c 100644
> --- a/drivers/char/tpm/tpm-interface.c
> +++ b/drivers/char/tpm/tpm-interface.c
> @@ -526,8 +526,8 @@ ssize_t tpm_transmit_cmd(struct tpm_chip *chip, struct tpm_space *space,
> 
>        err = be32_to_cpu(header->return_code);
>        if (err != 0 && desc)
> -               dev_err(&chip->dev, "A TPM error (%d) occurred %s\n", err,
> -                       desc);
> +               dev_err(&chip->dev, "A TPM error (%d (0x%x)) occurred %s\n", err,
> +                       err, desc);
>        if (err)
>                return err;
> 
> 
> > >  	if (err)
> > >  		return err;
> > > 
> > > --
> > > 2.13.0.rc0.45.ge2cb6ab84
> > > 

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web