Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-19 Thread Jarkko Sakkinen
On Fri, Mar 16, 2018 at 08:36:52AM -0400, Mimi Zohar wrote:
> On Fri, 2018-03-16 at 14:21 +0200, Jarkko Sakkinen wrote:
> > On Mon, Mar 05, 2018 at 05:52:24PM -0500, Mimi Zohar wrote:
> > > Hi Jarrko,
> > > 
> > > On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> > > > In order to make struct tpm_buf the first class object for constructing 
> > > > TPM
> > > > commands, migrate tpm2_probe() to use it.
> > > > 
> > > > Signed-off-by: Jarkko Sakkinen 
> > > 
> > > With this patch, the Pi doesn't find the TPM.  I'm seeing the
> > > following line in dmesg.
> > > 
> > > [1.087414] tpm_tis_spi: probe of spi0.0 failed with error 256
> > 
> > Thank you for reporting this Mimi. Does it have TPM1/TPM2?
> 
> The pi has a TPM 2.0 attached to the GPIO.  James pointed out the
> change in return codes.
> 
> 
> +   if (be16_to_cpu(out->tag) == TPM2_ST_NO_SESSIONS)
> chip->flags |= TPM_CHIP_FLAG_TPM2;
> -
> -   return 0;
> +out:
> +   tpm_buf_destroy();
> +   return rc;
>  }
>  EXPORT_SYMBOL_GPL(tpm2_probe);
> 
> Mimi

Oops, thank you James and Mimi for pointing this out. I'll refine
the patch set.

/Jarkko


Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-19 Thread Jarkko Sakkinen
On Fri, Mar 16, 2018 at 08:36:52AM -0400, Mimi Zohar wrote:
> On Fri, 2018-03-16 at 14:21 +0200, Jarkko Sakkinen wrote:
> > On Mon, Mar 05, 2018 at 05:52:24PM -0500, Mimi Zohar wrote:
> > > Hi Jarrko,
> > > 
> > > On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> > > > In order to make struct tpm_buf the first class object for constructing 
> > > > TPM
> > > > commands, migrate tpm2_probe() to use it.
> > > > 
> > > > Signed-off-by: Jarkko Sakkinen 
> > > 
> > > With this patch, the Pi doesn't find the TPM.  I'm seeing the
> > > following line in dmesg.
> > > 
> > > [1.087414] tpm_tis_spi: probe of spi0.0 failed with error 256
> > 
> > Thank you for reporting this Mimi. Does it have TPM1/TPM2?
> 
> The pi has a TPM 2.0 attached to the GPIO.  James pointed out the
> change in return codes.
> 
> 
> +   if (be16_to_cpu(out->tag) == TPM2_ST_NO_SESSIONS)
> chip->flags |= TPM_CHIP_FLAG_TPM2;
> -
> -   return 0;
> +out:
> +   tpm_buf_destroy();
> +   return rc;
>  }
>  EXPORT_SYMBOL_GPL(tpm2_probe);
> 
> Mimi

Oops, thank you James and Mimi for pointing this out. I'll refine
the patch set.

/Jarkko


Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-16 Thread Mimi Zohar
On Fri, 2018-03-16 at 14:21 +0200, Jarkko Sakkinen wrote:
> On Mon, Mar 05, 2018 at 05:52:24PM -0500, Mimi Zohar wrote:
> > Hi Jarrko,
> > 
> > On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> > > In order to make struct tpm_buf the first class object for constructing 
> > > TPM
> > > commands, migrate tpm2_probe() to use it.
> > > 
> > > Signed-off-by: Jarkko Sakkinen 
> > 
> > With this patch, the Pi doesn't find the TPM.  I'm seeing the
> > following line in dmesg.
> > 
> > [1.087414] tpm_tis_spi: probe of spi0.0 failed with error 256
> 
> Thank you for reporting this Mimi. Does it have TPM1/TPM2?

The pi has a TPM 2.0 attached to the GPIO.  James pointed out the
change in return codes.


+   if (be16_to_cpu(out->tag) == TPM2_ST_NO_SESSIONS)
chip->flags |= TPM_CHIP_FLAG_TPM2;
-
-   return 0;
+out:
+   tpm_buf_destroy();
+   return rc;
 }
 EXPORT_SYMBOL_GPL(tpm2_probe);

Mimi



Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-16 Thread Mimi Zohar
On Fri, 2018-03-16 at 14:21 +0200, Jarkko Sakkinen wrote:
> On Mon, Mar 05, 2018 at 05:52:24PM -0500, Mimi Zohar wrote:
> > Hi Jarrko,
> > 
> > On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> > > In order to make struct tpm_buf the first class object for constructing 
> > > TPM
> > > commands, migrate tpm2_probe() to use it.
> > > 
> > > Signed-off-by: Jarkko Sakkinen 
> > 
> > With this patch, the Pi doesn't find the TPM.  I'm seeing the
> > following line in dmesg.
> > 
> > [1.087414] tpm_tis_spi: probe of spi0.0 failed with error 256
> 
> Thank you for reporting this Mimi. Does it have TPM1/TPM2?

The pi has a TPM 2.0 attached to the GPIO.  James pointed out the
change in return codes.


+   if (be16_to_cpu(out->tag) == TPM2_ST_NO_SESSIONS)
chip->flags |= TPM_CHIP_FLAG_TPM2;
-
-   return 0;
+out:
+   tpm_buf_destroy();
+   return rc;
 }
 EXPORT_SYMBOL_GPL(tpm2_probe);

Mimi



Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-16 Thread Jarkko Sakkinen
On Mon, Mar 05, 2018 at 05:52:24PM -0500, Mimi Zohar wrote:
> Hi Jarrko,
> 
> On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> > In order to make struct tpm_buf the first class object for constructing TPM
> > commands, migrate tpm2_probe() to use it.
> > 
> > Signed-off-by: Jarkko Sakkinen 
> 
> With this patch, the Pi doesn't find the TPM.  I'm seeing the
> following line in dmesg.
> 
> [1.087414] tpm_tis_spi: probe of spi0.0 failed with error 256

Thank you for reporting this Mimi. Does it have TPM1/TPM2?

/Jarkko


Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-16 Thread Jarkko Sakkinen
On Mon, Mar 05, 2018 at 05:52:24PM -0500, Mimi Zohar wrote:
> Hi Jarrko,
> 
> On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> > In order to make struct tpm_buf the first class object for constructing TPM
> > commands, migrate tpm2_probe() to use it.
> > 
> > Signed-off-by: Jarkko Sakkinen 
> 
> With this patch, the Pi doesn't find the TPM.  I'm seeing the
> following line in dmesg.
> 
> [1.087414] tpm_tis_spi: probe of spi0.0 failed with error 256

Thank you for reporting this Mimi. Does it have TPM1/TPM2?

/Jarkko


Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-10 Thread Jarkko Sakkinen
On Thu, 2018-03-08 at 13:47 -0800, J Freyensee wrote:
> Looks better :-).
> 
> 
> Acked-by: Jay Freyensee 

Thank you.

/Jarkko


Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-10 Thread Jarkko Sakkinen
On Thu, 2018-03-08 at 13:47 -0800, J Freyensee wrote:
> Looks better :-).
> 
> 
> Acked-by: Jay Freyensee 

Thank you.

/Jarkko


Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-08 Thread J Freyensee



On 3/5/18 8:56 AM, Jarkko Sakkinen wrote:

In order to make struct tpm_buf the first class object for constructing TPM
commands, migrate tpm2_probe() to use it.

Signed-off-by: Jarkko Sakkinen 
---
  drivers/char/tpm/tpm2-cmd.c | 27 +++
  1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
index abe6ef4a7a0b..890d83c5c78b 100644
--- a/drivers/char/tpm/tpm2-cmd.c
+++ b/drivers/char/tpm/tpm2-cmd.c
@@ -851,22 +851,25 @@ static int tpm2_do_selftest(struct tpm_chip *chip)
   */
  int tpm2_probe(struct tpm_chip *chip)
  {
-   struct tpm2_cmd cmd;
+   struct tpm_output_header *out;
+   struct tpm_buf buf;
int rc;
  
-	cmd.header.in = tpm2_get_tpm_pt_header;

-   cmd.params.get_tpm_pt_in.cap_id = cpu_to_be32(TPM2_CAP_TPM_PROPERTIES);
-   cmd.params.get_tpm_pt_in.property_id = cpu_to_be32(0x100);
-   cmd.params.get_tpm_pt_in.property_cnt = cpu_to_be32(1);
-
-   rc = tpm_transmit_cmd(chip, NULL, , sizeof(cmd), 0, 0, NULL);
-   if (rc <  0)
+   rc = tpm_buf_init(, TPM2_ST_NO_SESSIONS, TPM2_CC_GET_CAPABILITY);
+   if (rc)
return rc;
-
-   if (be16_to_cpu(cmd.header.out.tag) == TPM2_ST_NO_SESSIONS)
+   tpm_buf_append_u32(, TPM2_CAP_TPM_PROPERTIES);
+   tpm_buf_append_u32(, TPM_PT_TOTAL_COMMANDS);
+   tpm_buf_append_u32(, 1);
+   rc = tpm_transmit_cmd(chip, NULL, buf.data, PAGE_SIZE, 0, 0, NULL);
+   if (rc <  0)
+   goto out;
+   out = (struct tpm_output_header *)buf.data;
+   if (be16_to_cpu(out->tag) == TPM2_ST_NO_SESSIONS)
chip->flags |= TPM_CHIP_FLAG_TPM2;
-
-   return 0;
+out:
+   tpm_buf_destroy();
+   return rc;



Looks better :-).


Acked-by: Jay Freyensee 



  }
  EXPORT_SYMBOL_GPL(tpm2_probe);
  




Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-08 Thread J Freyensee



On 3/5/18 8:56 AM, Jarkko Sakkinen wrote:

In order to make struct tpm_buf the first class object for constructing TPM
commands, migrate tpm2_probe() to use it.

Signed-off-by: Jarkko Sakkinen 
---
  drivers/char/tpm/tpm2-cmd.c | 27 +++
  1 file changed, 15 insertions(+), 12 deletions(-)

diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
index abe6ef4a7a0b..890d83c5c78b 100644
--- a/drivers/char/tpm/tpm2-cmd.c
+++ b/drivers/char/tpm/tpm2-cmd.c
@@ -851,22 +851,25 @@ static int tpm2_do_selftest(struct tpm_chip *chip)
   */
  int tpm2_probe(struct tpm_chip *chip)
  {
-   struct tpm2_cmd cmd;
+   struct tpm_output_header *out;
+   struct tpm_buf buf;
int rc;
  
-	cmd.header.in = tpm2_get_tpm_pt_header;

-   cmd.params.get_tpm_pt_in.cap_id = cpu_to_be32(TPM2_CAP_TPM_PROPERTIES);
-   cmd.params.get_tpm_pt_in.property_id = cpu_to_be32(0x100);
-   cmd.params.get_tpm_pt_in.property_cnt = cpu_to_be32(1);
-
-   rc = tpm_transmit_cmd(chip, NULL, , sizeof(cmd), 0, 0, NULL);
-   if (rc <  0)
+   rc = tpm_buf_init(, TPM2_ST_NO_SESSIONS, TPM2_CC_GET_CAPABILITY);
+   if (rc)
return rc;
-
-   if (be16_to_cpu(cmd.header.out.tag) == TPM2_ST_NO_SESSIONS)
+   tpm_buf_append_u32(, TPM2_CAP_TPM_PROPERTIES);
+   tpm_buf_append_u32(, TPM_PT_TOTAL_COMMANDS);
+   tpm_buf_append_u32(, 1);
+   rc = tpm_transmit_cmd(chip, NULL, buf.data, PAGE_SIZE, 0, 0, NULL);
+   if (rc <  0)
+   goto out;
+   out = (struct tpm_output_header *)buf.data;
+   if (be16_to_cpu(out->tag) == TPM2_ST_NO_SESSIONS)
chip->flags |= TPM_CHIP_FLAG_TPM2;
-
-   return 0;
+out:
+   tpm_buf_destroy();
+   return rc;



Looks better :-).


Acked-by: Jay Freyensee 



  }
  EXPORT_SYMBOL_GPL(tpm2_probe);
  




Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-06 Thread Jason Gunthorpe
On Tue, Mar 06, 2018 at 01:37:31PM +0200, Jarkko Sakkinen wrote:
> On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> > In order to make struct tpm_buf the first class object for constructing TPM
> > commands, migrate tpm2_probe() to use it.
> > 
> > Signed-off-by: Jarkko Sakkinen 
> 
> Jason, is this now OK? I removed the error klog.

Sure the log message is gone - but I haven't been auditing your tpm_buf
work..

Jason


Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-06 Thread Jason Gunthorpe
On Tue, Mar 06, 2018 at 01:37:31PM +0200, Jarkko Sakkinen wrote:
> On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> > In order to make struct tpm_buf the first class object for constructing TPM
> > commands, migrate tpm2_probe() to use it.
> > 
> > Signed-off-by: Jarkko Sakkinen 
> 
> Jason, is this now OK? I removed the error klog.

Sure the log message is gone - but I haven't been auditing your tpm_buf
work..

Jason


Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-06 Thread Jarkko Sakkinen
On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> In order to make struct tpm_buf the first class object for constructing TPM
> commands, migrate tpm2_probe() to use it.
> 
> Signed-off-by: Jarkko Sakkinen 

Jason, is this now OK? I removed the error klog.

/Jarkko


Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-06 Thread Jarkko Sakkinen
On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> In order to make struct tpm_buf the first class object for constructing TPM
> commands, migrate tpm2_probe() to use it.
> 
> Signed-off-by: Jarkko Sakkinen 

Jason, is this now OK? I removed the error klog.

/Jarkko


Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-05 Thread Mimi Zohar
Hi Jarrko,

On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> In order to make struct tpm_buf the first class object for constructing TPM
> commands, migrate tpm2_probe() to use it.
> 
> Signed-off-by: Jarkko Sakkinen 

With this patch, the Pi doesn't find the TPM.  I'm seeing the
following line in dmesg.

[1.087414] tpm_tis_spi: probe of spi0.0 failed with error 256

Mimi

> ---
>  drivers/char/tpm/tpm2-cmd.c | 27 +++
>  1 file changed, 15 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
> index abe6ef4a7a0b..890d83c5c78b 100644
> --- a/drivers/char/tpm/tpm2-cmd.c
> +++ b/drivers/char/tpm/tpm2-cmd.c
> @@ -851,22 +851,25 @@ static int tpm2_do_selftest(struct tpm_chip *chip)
>   */
>  int tpm2_probe(struct tpm_chip *chip)
>  {
> - struct tpm2_cmd cmd;
> + struct tpm_output_header *out;
> + struct tpm_buf buf;
>   int rc;
> 
> - cmd.header.in = tpm2_get_tpm_pt_header;
> - cmd.params.get_tpm_pt_in.cap_id = cpu_to_be32(TPM2_CAP_TPM_PROPERTIES);
> - cmd.params.get_tpm_pt_in.property_id = cpu_to_be32(0x100);
> - cmd.params.get_tpm_pt_in.property_cnt = cpu_to_be32(1);
> -
> - rc = tpm_transmit_cmd(chip, NULL, , sizeof(cmd), 0, 0, NULL);
> - if (rc <  0)
> + rc = tpm_buf_init(, TPM2_ST_NO_SESSIONS, TPM2_CC_GET_CAPABILITY);
> + if (rc)
>   return rc;
> -
> - if (be16_to_cpu(cmd.header.out.tag) == TPM2_ST_NO_SESSIONS)
> + tpm_buf_append_u32(, TPM2_CAP_TPM_PROPERTIES);
> + tpm_buf_append_u32(, TPM_PT_TOTAL_COMMANDS);
> + tpm_buf_append_u32(, 1);
> + rc = tpm_transmit_cmd(chip, NULL, buf.data, PAGE_SIZE, 0, 0, NULL);
> + if (rc <  0)
> + goto out;
> + out = (struct tpm_output_header *)buf.data;
> + if (be16_to_cpu(out->tag) == TPM2_ST_NO_SESSIONS)
>   chip->flags |= TPM_CHIP_FLAG_TPM2;
> -
> - return 0;
> +out:
> + tpm_buf_destroy();
> + return rc;
>  }
>  EXPORT_SYMBOL_GPL(tpm2_probe);
> 



Re: [PATCH v3 3/5] tpm: migrate tpm2_probe() to use struct tpm_buf

2018-03-05 Thread Mimi Zohar
Hi Jarrko,

On Mon, 2018-03-05 at 18:56 +0200, Jarkko Sakkinen wrote:
> In order to make struct tpm_buf the first class object for constructing TPM
> commands, migrate tpm2_probe() to use it.
> 
> Signed-off-by: Jarkko Sakkinen 

With this patch, the Pi doesn't find the TPM.  I'm seeing the
following line in dmesg.

[1.087414] tpm_tis_spi: probe of spi0.0 failed with error 256

Mimi

> ---
>  drivers/char/tpm/tpm2-cmd.c | 27 +++
>  1 file changed, 15 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
> index abe6ef4a7a0b..890d83c5c78b 100644
> --- a/drivers/char/tpm/tpm2-cmd.c
> +++ b/drivers/char/tpm/tpm2-cmd.c
> @@ -851,22 +851,25 @@ static int tpm2_do_selftest(struct tpm_chip *chip)
>   */
>  int tpm2_probe(struct tpm_chip *chip)
>  {
> - struct tpm2_cmd cmd;
> + struct tpm_output_header *out;
> + struct tpm_buf buf;
>   int rc;
> 
> - cmd.header.in = tpm2_get_tpm_pt_header;
> - cmd.params.get_tpm_pt_in.cap_id = cpu_to_be32(TPM2_CAP_TPM_PROPERTIES);
> - cmd.params.get_tpm_pt_in.property_id = cpu_to_be32(0x100);
> - cmd.params.get_tpm_pt_in.property_cnt = cpu_to_be32(1);
> -
> - rc = tpm_transmit_cmd(chip, NULL, , sizeof(cmd), 0, 0, NULL);
> - if (rc <  0)
> + rc = tpm_buf_init(, TPM2_ST_NO_SESSIONS, TPM2_CC_GET_CAPABILITY);
> + if (rc)
>   return rc;
> -
> - if (be16_to_cpu(cmd.header.out.tag) == TPM2_ST_NO_SESSIONS)
> + tpm_buf_append_u32(, TPM2_CAP_TPM_PROPERTIES);
> + tpm_buf_append_u32(, TPM_PT_TOTAL_COMMANDS);
> + tpm_buf_append_u32(, 1);
> + rc = tpm_transmit_cmd(chip, NULL, buf.data, PAGE_SIZE, 0, 0, NULL);
> + if (rc <  0)
> + goto out;
> + out = (struct tpm_output_header *)buf.data;
> + if (be16_to_cpu(out->tag) == TPM2_ST_NO_SESSIONS)
>   chip->flags |= TPM_CHIP_FLAG_TPM2;
> -
> - return 0;
> +out:
> + tpm_buf_destroy();
> + return rc;
>  }
>  EXPORT_SYMBOL_GPL(tpm2_probe);
>