• Peter Huewe's avatar
    char/tpm: simplify duration calculation and eliminate smatch warning. · 07b133e6
    Peter Huewe authored
    This patch changes the semantics of the duration calculation for an
    ordinal, by masking out the higher bits of a tpm command, which specify
    whether it's an TPM_PROTECTED_COMMAND, TPM_UNPROTECTED_COMMAND,
    TPM_CONNECTION_COMMAND, TPM_CONNECTION_COMMAND, TPM_VENDOR_COMMAND.
    (See TPM Main Spec Part 2 Section 17 for details).
    
    For all TPM_PROTECTED and TPM_CONNECTION commands the results are
    unchanged.
    The TPM_UNPROTECTED commands are TSS commands and thus irrelevant as
    they are not sent to the tpm.
    For vendor commands the semantics change for ordinals 10 and 11 but
    they were probably wrong anyway.
    
    For everything else which has the ordinal set to 10 or 11 the semantics
    change as it now uses TPM_UNDEFINED instead of TPM_SHORT which was
    probably wrong anyway (but irrelevant as not defined by the standard).
    
    This patch also gets rid of the (false positive) smatch warning:
     drivers/char/tpm/tpm.c:360 tpm_calc_ordinal_duration() error: buffer
     overflow 'tpm_protected_ordinal_duration' 12 <= 243
    Signed-off-by: default avatarPeter Huewe <peterhuewe@gmx.de>
    Signed-off-by: default avatarKent Yoder <key@linux.vnet.ibm.com>
    07b133e6
tpm.c 35.5 KB