lkml.org 
[lkml]   [2011]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[34-longterm 067/247] TPM: Long default timeout fix
    Date
    From: Rajiv Andrade <srajiv@linux.vnet.ibm.com>

    -------------------
    This is a commit scheduled for the next v2.6.34 longterm release.
    If you see a problem with using this for longterm, please comment.
    -------------------

    commit c4ff4b829ef9e6353c0b133b7adb564a68054979 upstream.

    If duration variable value is 0 at this point, it's because
    chip->vendor.duration wasn't filled by tpm_get_timeouts() yet.
    This patch sets then the lowest timeout just to give enough
    time for tpm_get_timeouts() to further succeed.

    This fix avoids long boot times in case another entity attempts
    to send commands to the TPM when the TPM isn't accessible.

    Signed-off-by: Rajiv Andrade <srajiv@linux.vnet.ibm.com>
    Signed-off-by: James Morris <jmorris@namei.org>
    Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
    ---
    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 068c816..6ab5381 100644
    --- a/drivers/char/tpm/tpm.c
    +++ b/drivers/char/tpm/tpm.c
    @@ -354,12 +354,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);

    --
    1.7.4.4


    \
     
     \ /
      Last update: 2011-06-23 20:25    [W:4.231 / U:0.568 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site