Message ID | 20200427124931.115697-4-amirmizi6@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add tpm i2c ptp driver | expand |
On Mon, Apr 27, 2020 at 03:49:27PM +0300, amirmizi6@gmail.com wrote: > From: Amir Mizinski <amirmizi6@gmail.com> > > Using this function while reading/writing data resulted in an aborted > operation. > After investigating the issue according to the TCG TPM Profile (PTP) > Specifications, I found that "request to cancel" should occur only if > TPM_STS.commandReady bit is lit. > Note that i couldn't find a case where the present condition > (in the linux kernel) is valid, so I'm removing the case for > "TPM_VID_WINBOND" since we have no need for it. > > Also, the default comparison is wrong. Only cmdReady bit needs to be > compared instead of the full lower status register byte. > > Fixes: 1f86605 (tpm: Fix cancellation of TPM commands (polling mode)) Needs to have exactly 12 hex digits of the hash. /Jarkko
On 2020-04-29 05:37, Jarkko Sakkinen wrote: > On Mon, Apr 27, 2020 at 03:49:27PM +0300, amirmizi6@gmail.com wrote: >> From: Amir Mizinski <amirmizi6@gmail.com> >> >> Using this function while reading/writing data resulted in an aborted >> operation. >> After investigating the issue according to the TCG TPM Profile (PTP) >> Specifications, I found that "request to cancel" should occur only if >> TPM_STS.commandReady bit is lit. >> Note that i couldn't find a case where the present condition >> (in the linux kernel) is valid, so I'm removing the case for >> "TPM_VID_WINBOND" since we have no need for it. >> >> Also, the default comparison is wrong. Only cmdReady bit needs to be >> compared instead of the full lower status register byte. >> >> Fixes: 1f86605 (tpm: Fix cancellation of TPM commands (polling mode)) > > Needs to have exactly 12 hex digits of the hash. > Ok, i'll fix this for version 8. Thank you. > /Jarkko
diff --git a/drivers/char/tpm/tpm_tis_core.c b/drivers/char/tpm/tpm_tis_core.c index 5dd5604..682f950 100644 --- a/drivers/char/tpm/tpm_tis_core.c +++ b/drivers/char/tpm/tpm_tis_core.c @@ -715,13 +715,11 @@ static bool tpm_tis_req_canceled(struct tpm_chip *chip, u8 status) struct tpm_tis_data *priv = dev_get_drvdata(&chip->dev); switch (priv->manufacturer_id) { - case TPM_VID_WINBOND: - return ((status == TPM_STS_VALID) || - (status == (TPM_STS_VALID | TPM_STS_COMMAND_READY))); case TPM_VID_STM: return (status == (TPM_STS_VALID | TPM_STS_COMMAND_READY)); default: - return (status == TPM_STS_COMMAND_READY); + return ((status & TPM_STS_COMMAND_READY) == + TPM_STS_COMMAND_READY); } }