tpm_tis: further simplify calculation of ordinal duration
authorMartin Wilck <Martin.Wilck@ts.fujitsu.com>
Fri, 20 Nov 2015 13:32:33 +0000 (14:32 +0100)
committerJarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Wed, 2 Dec 2015 17:57:21 +0000 (19:57 +0200)
commit 07b133e6060b ("char/tpm: simplify duration calculation and
eliminate smatch warning.") includes a misleading test that is always
false. The tpm_ordinal_duration table is only valid for TPM_PROTECTED
ordinals where the higher 16 bits are all 0, anyway.

Signed-off-by: Martin Wilck <Martin.Wilck@ts.fujitsu.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Acked-by: Peter Huewe <peterhuewe@gmx.de>
drivers/char/tpm/tpm-interface.c

index c50637db3a8a9336f002d44046135bdb49fa7088..afdc83602e9fe08c1db788b6569f04b0ce350ded 100644 (file)
@@ -310,10 +310,12 @@ unsigned long tpm_calc_ordinal_duration(struct tpm_chip *chip,
 {
        int duration_idx = TPM_UNDEFINED;
        int duration = 0;
-       u8 category = (ordinal >> 24) & 0xFF;
 
-       if ((category == TPM_PROTECTED_COMMAND && ordinal < TPM_MAX_ORDINAL) ||
-           (category == TPM_CONNECTION_COMMAND && ordinal < TSC_MAX_ORDINAL))
+       /*
+        * We only have a duration table for protected commands, where the upper
+        * 16 bits are 0. For the few other ordinals the fallback will be used.
+        */
+       if (ordinal < TPM_MAX_ORDINAL)
                duration_idx = tpm_ordinal_duration[ordinal];
 
        if (duration_idx != TPM_UNDEFINED)