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

From: Sarah Sharp
Date: Mon Jul 19 2010 - 13:05:50 EST


On Sat, Jul 17, 2010 at 04:12:23PM +0200, Thomas Meyer wrote:
> Am Freitag, den 16.07.2010, 17:00 -0700 schrieb Sarah Sharp:
> > 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@xxxxxxxxxxxxxxxxxx>
> > 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@xxxxxxxxxxxxxxxxxx>
> > Signed-off-by: James Morris <jmorris@xxxxxxxxx>
> >
> > 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 the commit before the merge of this patch, and suspend
> > works fine. Can you fix this?
> >
> > Sarah Sharp
>
> Maybe same as https://bugzilla.kernel.org/show_bug.cgi?id=16256 ?

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.schaa%40googlemail.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/