• Stefan Berger's avatar
    tpm_ibmvtpm: properly handle interrupted packet receptions · 6674ff14
    Stefan Berger authored
    
    
    When the TPM response reception is interrupted in the wait_event_interruptable
    call, the TPM is still busy processing the command and will only deliver the
    response later. So we have to wait for an outstanding response before sending
    a new request to avoid trying to put a 2nd request into the CRQ. Also reset
    the res_len before sending a command so we will end up in that
    wait_event_interruptable() waiting for the response rather than reading the
    command packet as a response.
    
    The easiest way to trigger the problem is to run the following
    
    cd /sys/device/vio/71000004
    
    while :; cat pcrs >/dev/null; done
    
    And press Ctrl-C. This will then display an error
    
    tpm_ibmvtpm 71000004: tpm_transmit: tpm_recv: error -4
    
    followed by several other errors once interaction with the TPM resumes.
    
    tpm_ibmvtpm 71000004: A TPM error (101) occurred attempting to determine the number of PCRS.
    Signed-off-by: default avatarStefan Berger <stefanb@linux.vnet.ibm.com>
    Tested-by: Hon Ching...
    6674ff14
tpm_ibmvtpm.h 1.91 KB