diff options
author | Stefan Berger <stefanb@linux.vnet.ibm.com> | 2015-12-09 08:52:01 -0500 |
---|---|---|
committer | Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> | 2015-12-20 15:27:12 +0200 |
commit | 6674ff145eef1f158e3d1d065cb1e19f315d909b (patch) | |
tree | 82eb29e89966d0638edb5edbd0991a7ff5a2320e /security | |
parent | b8ba1e744445d65dad7dd61db909e7f2b89df35e (diff) | |
download | linux-6674ff145eef1f158e3d1d065cb1e19f315d909b.tar.gz linux-6674ff145eef1f158e3d1d065cb1e19f315d909b.tar.bz2 linux-6674ff145eef1f158e3d1d065cb1e19f315d909b.zip |
tpm_ibmvtpm: properly handle interrupted packet receptions
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: Stefan Berger <stefanb@linux.vnet.ibm.com>
Tested-by: Hon Ching(Vicky) Lo <honclo@linux.vnet.ibm.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Reviewed-by: Ashley Lai <ashley@ashleylai.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Acked-by: Peter Huewe <peterhuewe@gmx.de>
Diffstat (limited to 'security')
0 files changed, 0 insertions, 0 deletions