Commit e2fb992d82c6 ("tpm: add retry logic") introduced a new loop to
handle the TPM2_RC_RETRY error. The loop retries the command after
sleeping for the specified time, which is incremented exponentially in
every iteration. This patch fixes the initial sleep to be the default
sleep time.
Fixes: commit e2fb992d82c6 ("tpm: add retry logic")
Signed-off-by: Nayna Jain <[email protected]>
Reviewed-by: Mimi Zohar <[email protected]>
---
drivers/char/tpm/tpm-interface.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
index c43a9e28995e..6201aab374e6 100644
--- a/drivers/char/tpm/tpm-interface.c
+++ b/drivers/char/tpm/tpm-interface.c
@@ -587,7 +587,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
*/
if (rc == TPM2_RC_TESTING && cc == TPM2_CC_SELF_TEST)
break;
- delay_msec *= 2;
+
if (delay_msec > TPM2_DURATION_LONG) {
if (rc == TPM2_RC_RETRY)
dev_err(&chip->dev, "in retry loop\n");
@@ -597,6 +597,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
break;
}
tpm_msleep(delay_msec);
+ delay_msec *= 2;
memcpy(buf, save, save_size);
}
return ret;
--
2.13.6
On Mon, Apr 02, 2018 at 09:50:06PM +0530, Nayna Jain wrote:
> Commit e2fb992d82c6 ("tpm: add retry logic") introduced a new loop to
> handle the TPM2_RC_RETRY error. The loop retries the command after
> sleeping for the specified time, which is incremented exponentially in
> every iteration. This patch fixes the initial sleep to be the default
> sleep time.
I think I understand the code change but do not understand what the
long description.
>
> Fixes: commit e2fb992d82c6 ("tpm: add retry logic")
> Signed-off-by: Nayna Jain <[email protected]>
> Reviewed-by: Mimi Zohar <[email protected]>
> ---
> drivers/char/tpm/tpm-interface.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
> index c43a9e28995e..6201aab374e6 100644
> --- a/drivers/char/tpm/tpm-interface.c
> +++ b/drivers/char/tpm/tpm-interface.c
> @@ -587,7 +587,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
> */
> if (rc == TPM2_RC_TESTING && cc == TPM2_CC_SELF_TEST)
> break;
> - delay_msec *= 2;
> +
Extra whitespace
> if (delay_msec > TPM2_DURATION_LONG) {
> if (rc == TPM2_RC_RETRY)
> dev_err(&chip->dev, "in retry loop\n");
> @@ -597,6 +597,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
> break;
> }
> tpm_msleep(delay_msec);
> + delay_msec *= 2;
> memcpy(buf, save, save_size);
> }
> return ret;
> --
> 2.13.6
>
/Jarkko
On 04/05/2018 03:42 PM, Jarkko Sakkinen wrote:
> On Mon, Apr 02, 2018 at 09:50:06PM +0530, Nayna Jain wrote:
>> Commit e2fb992d82c6 ("tpm: add retry logic") introduced a new loop to
>> handle the TPM2_RC_RETRY error. The loop retries the command after
>> sleeping for the specified time, which is incremented exponentially in
>> every iteration. This patch fixes the initial sleep to be the default
>> sleep time.
> I think I understand the code change but do not understand what the
> long description.
It tells that the first sleep is delay_msec * 2 and not delay_msec.
>
>> Fixes: commit e2fb992d82c6 ("tpm: add retry logic")
>> Signed-off-by: Nayna Jain <[email protected]>
>> Reviewed-by: Mimi Zohar <[email protected]>
>> ---
>> drivers/char/tpm/tpm-interface.c | 3 ++-
>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
>> index c43a9e28995e..6201aab374e6 100644
>> --- a/drivers/char/tpm/tpm-interface.c
>> +++ b/drivers/char/tpm/tpm-interface.c
>> @@ -587,7 +587,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
>> */
>> if (rc == TPM2_RC_TESTING && cc == TPM2_CC_SELF_TEST)
>> break;
>> - delay_msec *= 2;
>> +
> Extra whitespace
I left just for clarity, but if not needed then I can remove it.
Thanks & Regards,
- Nayna
>
>> if (delay_msec > TPM2_DURATION_LONG) {
>> if (rc == TPM2_RC_RETRY)
>> dev_err(&chip->dev, "in retry loop\n");
>> @@ -597,6 +597,7 @@ ssize_t tpm_transmit(struct tpm_chip *chip, struct tpm_space *space,
>> break;
>> }
>> tpm_msleep(delay_msec);
>> + delay_msec *= 2;
>> memcpy(buf, save, save_size);
>> }
>> return ret;
>> --
>> 2.13.6
>>
> /Jarkko
>
On Fri, Apr 06, 2018 at 02:03:37PM +0530, Nayna Jain wrote:
> On 04/05/2018 03:42 PM, Jarkko Sakkinen wrote:
> > On Mon, Apr 02, 2018 at 09:50:06PM +0530, Nayna Jain wrote:
> > > Commit e2fb992d82c6 ("tpm: add retry logic") introduced a new loop to
> > > handle the TPM2_RC_RETRY error. The loop retries the command after
> > > sleeping for the specified time, which is incremented exponentially in
> > > every iteration. This patch fixes the initial sleep to be the default
> > > sleep time.
> > I think I understand the code change but do not understand what the
> > long description.
>
> It tells that the first sleep is delay_msec * 2 and not delay_msec.
So the problem is that the loop doubles the time before sleeping
for the first time. This is missing from the description. Please
refine it in some way.
/Jarkko
On Sat, 2018-04-07 at 13:36 +0300, Jarkko Sakkinen wrote:
> On Fri, Apr 06, 2018 at 02:03:37PM +0530, Nayna Jain wrote:
> > On 04/05/2018 03:42 PM, Jarkko Sakkinen wrote:
> > > On Mon, Apr 02, 2018 at 09:50:06PM +0530, Nayna Jain wrote:
> > > > Commit e2fb992d82c6 ("tpm: add retry logic") introduced a new loop to
> > > > handle the TPM2_RC_RETRY error. The loop retries the command after
> > > > sleeping for the specified time, which is incremented exponentially in
> > > > every iteration. This patch fixes the initial sleep to be the default
> > > > sleep time.
> > > I think I understand the code change but do not understand what the
> > > long description.
> >
> > It tells that the first sleep is delay_msec * 2 and not delay_msec.
>
> So the problem is that the loop doubles the time before sleeping
> for the first time. This is missing from the description. Please
> refine it in some way.
Sure, how about replacing the last line of the patch description with:
Unfortunately, the loop doubles the time before sleeping, causing the
initial sleep to be doubled. This patch fixes the initial sleep time.
If this change is acceptable, do you want to make the change or should Nayna repost the patch?
thanks,
Mimi
On Mon, 2018-04-09 at 10:29 -0400, Mimi Zohar wrote:
> On Sat, 2018-04-07 at 13:36 +0300, Jarkko Sakkinen wrote:
> > On Fri, Apr 06, 2018 at 02:03:37PM +0530, Nayna Jain wrote:
> > > On 04/05/2018 03:42 PM, Jarkko Sakkinen wrote:
> > > > On Mon, Apr 02, 2018 at 09:50:06PM +0530, Nayna Jain wrote:
> > > > > Commit e2fb992d82c6 ("tpm: add retry logic") introduced a new loop to
> > > > > handle the TPM2_RC_RETRY error. The loop retries the command after
> > > > > sleeping for the specified time, which is incremented exponentially in
> > > > > every iteration. This patch fixes the initial sleep to be the default
> > > > > sleep time.
> > > >
> > > > I think I understand the code change but do not understand what the
> > > > long description.
> > >
> > > It tells that the first sleep is delay_msec * 2 and not delay_msec.
> >
> > So the problem is that the loop doubles the time before sleeping
> > for the first time. This is missing from the description. Please
> > refine it in some way.
>
> Sure, how about replacing the last line of the patch description with:
> Unfortunately, the loop doubles the time before sleeping, causing the
> initial sleep to be doubled. This patch fixes the initial sleep time.
>
> If this change is acceptable, do you want to make the change or should Nayna
> repost the patch?
No need. I'll move on to testing.
/Jarkko
On Tue, Apr 10, 2018 at 03:31:09PM +0300, Jarkko Sakkinen wrote:
> On Mon, 2018-04-09 at 10:29 -0400, Mimi Zohar wrote:
> > If this change is acceptable, do you want to make the change or should Nayna
> > repost the patch?
>
> No need. I'll move on to testing.
Tested-by: Jarkko Sakkinen <[email protected]>
Reviewed-by: Jarkko Sakkinen <[email protected]>
/Jarkko