diff options
Diffstat (limited to 'drivers/char/tpm/tpm.c')
| -rw-r--r-- | drivers/char/tpm/tpm.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c index 1f46f1cd922..36e0fa161c2 100644 --- a/drivers/char/tpm/tpm.c +++ b/drivers/char/tpm/tpm.c @@ -364,12 +364,14 @@ unsigned long tpm_calc_ordinal_duration(struct tpm_chip *chip,  		    tpm_protected_ordinal_duration[ordinal &  						   TPM_PROTECTED_ORDINAL_MASK]; -	if (duration_idx != TPM_UNDEFINED) +	if (duration_idx != TPM_UNDEFINED) {  		duration = chip->vendor.duration[duration_idx]; -	if (duration <= 0) +		/* if duration is 0, it's because chip->vendor.duration wasn't */ +		/* filled yet, so we set the lowest timeout just to give enough */ +		/* time for tpm_get_timeouts() to succeed */ +		return (duration <= 0 ? HZ : duration); +	} else  		return 2 * 60 * HZ; -	else -		return duration;  }  EXPORT_SYMBOL_GPL(tpm_calc_ordinal_duration);  |