• Jarkko Sakkinen's avatar
    tpm_crb: fix crb_req_canceled behavior · 8866a288
    Jarkko Sakkinen authored
    commit 72fd50e1 upstream.
    
    The req_canceled() callback is used by tpm_transmit() periodically to
    check whether the request has been canceled while it is receiving a
    response from the TPM.
    
    The TPM_CRB_CTRL_CANCEL register was cleared already in the crb_cancel
    callback, which has two consequences:
    
    * Cancel might not happen.
    * req_canceled() always returns zero.
    
    A better place to clear the register is when starting to send a new
    command. The behavior of TPM_CRB_CTRL_CANCEL is described in the
    section 5.5.3.6 of the PTP specification.
    
    Fixes: 30fc8d13 ("tpm: TPM 2.0 CRB Interface")
    Signed-off-by: default avatarJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    8866a288
tpm_crb.c 7.86 KB