• Stefan Berger's avatar
    tpm: ibmvtpm: Avoid error message when process gets signal while waiting · 047d4226
    Stefan Berger authored
    When rngd is run as root then lots of these types of message will appear
    in the kernel log if the TPM has been configured to provide random bytes:
    
    [ 7406.275163] tpm tpm0: tpm_transmit: tpm_recv: error -4
    
    The issue is caused by the following call that is interrupted while
    waiting for the TPM's response.
    
    sig = wait_event_interruptible(ibmvtpm->wq, !ibmvtpm->tpm_processing_cmd);
    
    Rather than waiting for the response in the low level driver, have it use
    the polling loop in tpm_try_transmit() that uses a command's duration to
    poll until a result has been returned by the TPM, thus ending when the
    timeout has occurred but not responding to signals and ctrl-c anymore. To
    stay in this polling loop extend tpm_ibmvtpm_status() to return
    'true' for as long as the vTPM is indicated as being busy in
    tpm_processing_cmd. Since the loop requires the TPM's timeouts, get them
    now using tpm_get_timeouts() after setting the TPM2 version flag on the
    chip.
    
    To recreat the resolved issue start rngd like this:
    
    sudo rngd -r /dev/hwrng -t
    sudo rngd -r /dev/tpm0 -t
    
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=1981473
    Fixes: 6674ff14 ("tpm_ibmvtpm: properly handle interrupted packet receptions")
    Cc: Nayna Jain <nayna@linux.ibm.com>
    Cc: George Wilson <gcwilson@linux.ibm.com>
    Reported-by: default avatarNageswara R Sastry <rnsastry@linux.ibm.com>
    Signed-off-by: default avatarStefan Berger <stefanb@linux.ibm.com>
    Tested-by: default avatarNageswara R Sastry <rnsastry@linux.ibm.com>
    Reviewed-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
    Signed-off-by: default avatarJarkko Sakkinen <jarkko@kernel.org>
    047d4226
tpm_ibmvtpm.h 1.77 KB