Re: TPM bug fix causes hang on suspend (2.6.35-rc4)

Previous thread: by DHL UNIT on Sunday, June 27, 2010 - 4:02 am. (1 message)

Next thread: [PATCH RFC 02/12] x86/ticketlock: convert spin loop to C by Jeremy Fitzhardinge on Friday, July 2, 2010 - 5:06 pm. (1 message)
From: Sarah Sharp
Date: Friday, July 16, 2010 - 5:00 pm

I recently upgraded to 2.6.35-rc4, and I discovered that suspend no
longer works on my Thinkpad x200s.  When I suspend with some programs
open (specifically while buffy is reading my maildirs), the suspend
light blinks forever and the system never suspends.

I bisected the issue down to commit b5edfef, which is a merge of James
Morris' security-testing-2.6 tree, that only included this commit:

commit 02a077c52ef7631275a79862ffd9f3dbe9d38bc2
Author: Rajiv Andrade <srajiv@linux.vnet.ibm.com>
Date:   Mon Jun 14 13:58:22 2010 -0300

    TPM: ReadPubEK output struct fix
    
    This patch adds a missing element of the ReadPubEK command output,
    that prevents future overflow of this buffer when copying the
    TPM output result into it.
    
    Prevents a kernel panic in case the user tries to read the
    pubek from sysfs.
    
    Signed-off-by: Rajiv Andrade <srajiv@linux.vnet.ibm.com>
    Signed-off-by: James Morris <jmorris@namei.org>

diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
index 8e00b4d..792868d 100644
--- a/drivers/char/tpm/tpm.h
+++ b/drivers/char/tpm/tpm.h
@@ -224,6 +224,7 @@ struct      tpm_readpubek_params_out {
        u8      algorithm[4];
        u8      encscheme[2];
        u8      sigscheme[2];
+       __be32  paramsize;
        u8      parameters[12]; /*assuming RSA*/
        __be32  keysize;
        u8      modulus[256];

The dmesg captured over netconsole when suspend fails is attached, but
it doesn't look very interesting.  lspci output is also attached.  I
don't have any userspace programs installed that can use TPM, like
trousers or libtspi1.

If I try just removing the tpm_tis, tpm_bios, and tpm modules before
suspending, the suspend still fails.  If I recompile without TPM
hardware support (CONFIG_TCG_TPM=n), suspend still fails.  However, if I
also turn off the securityFS config option (CONFIG_SECURITYFS),
suspend succeeds.

It looks like an odd commit to cause a suspend failure, but when I reset
the git HEAD to ...
From: Thomas Meyer
Date: Saturday, July 17, 2010 - 7:12 am

From: Sarah Sharp
Date: Monday, July 19, 2010 - 10:05 am

That doesn't look really similar.  The user found a different patch at
fault, and they were also able to successfully suspend when the tpm_tis
module was removed, but suspend still breaks for me in that case.
Suspend breaks with that commit even when I don't compile any tpm
modules at all.  But I'll try Helmut's fix[1] and let you know if it
works.

Sarah Sharp

[1] http://sourceforge.net/mailarchive/message.php?msg_name=201006091511.09810.helmut.scha...
--

From: Sarah Sharp
Date: Tuesday, August 10, 2010 - 11:31 am

I tried the fix, and all seemed well for a while.  Then suspend randomly
broken again.  I've tried to update to 2.6.35, but I have the same issue
(constant blinking suspend light and the suspend never completes).

Sarah Sharp
--

Previous thread: by DHL UNIT on Sunday, June 27, 2010 - 4:02 am. (1 message)

Next thread: [PATCH RFC 02/12] x86/ticketlock: convert spin loop to C by Jeremy Fitzhardinge on Friday, July 2, 2010 - 5:06 pm. (1 message)