lkml.org 
[lkml]   [2020]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v8 3/8] tpm: tpm_tis: Rewrite "tpm_tis_req_canceled()"
    Date
    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: 1f866057291f (tpm: Fix cancellation of TPM commands (polling mode))
    Signed-off-by: Amir Mizinski <amirmizi6@gmail.com>
    ---
    drivers/char/tpm/tpm_tis_core.c | 6 ++----
    1 file changed, 2 insertions(+), 4 deletions(-)

    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);
    }
    }

    --
    2.7.4
    \
     
     \ /
      Last update: 2020-05-12 16:16    [W:4.144 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site