2008-06-05 20:20:12

by Marcin Obara

[permalink] [raw]
Subject: [PATCH] tpm:correct tpm timeouts to jiffies conversion

This patch fixes timeouts conversion to jiffies,
by replacing msecs_to_jiffies() calls with usecs_to_jiffies().
According to TCG TPM Specification Version 1.2 Revision 103 (pages 166, 167)
TPM timeouts and durations are returned in microseconds (usec)
not in miliseconds (msec).

Signed-off-by: Marcin Obara <[email protected]>

--- linux/drivers/char/tpm/tpm.c 2008-06-05 20:57:06.000000000 +0200
+++ linux_tpm/drivers/char/tpm/tpm.c 2008-06-05 20:54:52.000000000 +0200
@@ -524,19 +524,19 @@ void tpm_get_timeouts(struct tpm_chip *c
timeout =
be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_1_IDX)));
if (timeout)
- chip->vendor.timeout_a = msecs_to_jiffies(timeout);
+ chip->vendor.timeout_a = usecs_to_jiffies(timeout);
timeout =
be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_2_IDX)));
if (timeout)
- chip->vendor.timeout_b = msecs_to_jiffies(timeout);
+ chip->vendor.timeout_b = usecs_to_jiffies(timeout);
timeout =
be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_3_IDX)));
if (timeout)
- chip->vendor.timeout_c = msecs_to_jiffies(timeout);
+ chip->vendor.timeout_c = usecs_to_jiffies(timeout);
timeout =
be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_4_IDX)));
if (timeout)
- chip->vendor.timeout_d = msecs_to_jiffies(timeout);
+ chip->vendor.timeout_d = usecs_to_jiffies(timeout);

duration:
memcpy(data, tpm_cap, sizeof(tpm_cap));
@@ -553,15 +553,15 @@ duration:
return;

chip->vendor.duration[TPM_SHORT] =
- msecs_to_jiffies(be32_to_cpu
+ usecs_to_jiffies(be32_to_cpu
(*((__be32 *) (data +
TPM_GET_CAP_RET_UINT32_1_IDX))));
chip->vendor.duration[TPM_MEDIUM] =
- msecs_to_jiffies(be32_to_cpu
+ usecs_to_jiffies(be32_to_cpu
(*((__be32 *) (data +
TPM_GET_CAP_RET_UINT32_2_IDX))));
chip->vendor.duration[TPM_LONG] =
- msecs_to_jiffies(be32_to_cpu
+ usecs_to_jiffies(be32_to_cpu
(*((__be32 *) (data +
TPM_GET_CAP_RET_UINT32_3_IDX))));
}


2008-07-02 11:36:17

by Marcel Selhorst

[permalink] [raw]
Subject: Re: [PATCH] tpm:correct tpm timeouts to jiffies conversion

Acked-by: Marcel Selhorst <[email protected]>

Marcin Obara schrieb:
> This patch fixes timeouts conversion to jiffies,
> by replacing msecs_to_jiffies() calls with usecs_to_jiffies().
> According to TCG TPM Specification Version 1.2 Revision 103 (pages 166, 167)
> TPM timeouts and durations are returned in microseconds (usec)
> not in miliseconds (msec).
>
> Signed-off-by: Marcin Obara <[email protected]>
>
> --- linux/drivers/char/tpm/tpm.c 2008-06-05 20:57:06.000000000 +0200
> +++ linux_tpm/drivers/char/tpm/tpm.c 2008-06-05 20:54:52.000000000 +0200
> @@ -524,19 +524,19 @@ void tpm_get_timeouts(struct tpm_chip *c
> timeout =
> be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_1_IDX)));
> if (timeout)
> - chip->vendor.timeout_a = msecs_to_jiffies(timeout);
> + chip->vendor.timeout_a = usecs_to_jiffies(timeout);
> timeout =
> be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_2_IDX)));
> if (timeout)
> - chip->vendor.timeout_b = msecs_to_jiffies(timeout);
> + chip->vendor.timeout_b = usecs_to_jiffies(timeout);
> timeout =
> be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_3_IDX)));
> if (timeout)
> - chip->vendor.timeout_c = msecs_to_jiffies(timeout);
> + chip->vendor.timeout_c = usecs_to_jiffies(timeout);
> timeout =
> be32_to_cpu(*((__be32 *) (data + TPM_GET_CAP_RET_UINT32_4_IDX)));
> if (timeout)
> - chip->vendor.timeout_d = msecs_to_jiffies(timeout);
> + chip->vendor.timeout_d = usecs_to_jiffies(timeout);
>
> duration:
> memcpy(data, tpm_cap, sizeof(tpm_cap));
> @@ -553,15 +553,15 @@ duration:
> return;
>
> chip->vendor.duration[TPM_SHORT] =
> - msecs_to_jiffies(be32_to_cpu
> + usecs_to_jiffies(be32_to_cpu
> (*((__be32 *) (data +
> TPM_GET_CAP_RET_UINT32_1_IDX))));
> chip->vendor.duration[TPM_MEDIUM] =
> - msecs_to_jiffies(be32_to_cpu
> + usecs_to_jiffies(be32_to_cpu
> (*((__be32 *) (data +
> TPM_GET_CAP_RET_UINT32_2_IDX))));
> chip->vendor.duration[TPM_LONG] =
> - msecs_to_jiffies(be32_to_cpu
> + usecs_to_jiffies(be32_to_cpu
> (*((__be32 *) (data +
> TPM_GET_CAP_RET_UINT32_3_IDX))));
> }
>