All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] tpm_tis: fix potential buffer overruns caused by bit glitches on the bus
@ 2018-03-16 12:09 Jarkko Sakkinen
  2018-03-16 13:11 ` Greg KH
  0 siblings, 1 reply; 5+ messages in thread
From: Jarkko Sakkinen @ 2018-03-16 12:09 UTC (permalink / raw)
  To: stable; +Cc: Jeremy Boone, James Bottomley, Jarkko Sakkinen

From: Jeremy Boone <jeremy.boone@nccgroup.trust>

commit 2c0a646268f2a3536866bf237733a52aec260594 upstream

Discrete TPMs are often connected over slow serial buses which, on
some platforms, can have glitches causing bit flips.  In all the
driver _recv() functions, we need to use a u32 to unmarshal the
response size, otherwise a bit flip of the 31st bit would cause the
expected variable to go negative, which would then try to read a huge
amount of data.  Also sanity check that the expected amount of data is
large enough for the TPM header.

Signed-off-by: Jeremy Boone <jeremy.boone@nccgroup.trust>
Cc: stable@vger.kernel.org
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
---
Backported to v4.4 because of merge conflict.
 drivers/char/tpm/tpm_tis.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c
index 7f13221aeb30..9dd93a209ef2 100644
--- a/drivers/char/tpm/tpm_tis.c
+++ b/drivers/char/tpm/tpm_tis.c
@@ -283,7 +283,8 @@ static int recv_data(struct tpm_chip *chip, u8 *buf, size_t count)
 static int tpm_tis_recv(struct tpm_chip *chip, u8 *buf, size_t count)
 {
 	int size = 0;
-	int expected, status;
+	int status;
+	u32 expected;
 
 	if (count < TPM_HEADER_SIZE) {
 		size = -EIO;
@@ -298,7 +299,7 @@ static int tpm_tis_recv(struct tpm_chip *chip, u8 *buf, size_t count)
 	}
 
 	expected = be32_to_cpu(*(__be32 *) (buf + 2));
-	if (expected > count) {
+	if (expected > count || expected < TPM_HEADER_SIZE) {
 		size = -EIO;
 		goto out;
 	}
-- 
2.15.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH] tpm_tis: fix potential buffer overruns caused by bit glitches on the bus
  2018-03-16 12:09 [PATCH] tpm_tis: fix potential buffer overruns caused by bit glitches on the bus Jarkko Sakkinen
@ 2018-03-16 13:11 ` Greg KH
  2018-03-16 14:36   ` Jarkko Sakkinen
  0 siblings, 1 reply; 5+ messages in thread
From: Greg KH @ 2018-03-16 13:11 UTC (permalink / raw)
  To: Jarkko Sakkinen; +Cc: stable, Jeremy Boone, James Bottomley

On Fri, Mar 16, 2018 at 02:09:40PM +0200, Jarkko Sakkinen wrote:
> From: Jeremy Boone <jeremy.boone@nccgroup.trust>
> 
> commit 2c0a646268f2a3536866bf237733a52aec260594 upstream

I don't see this git commit id anywhere in Linus's tree :(

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] tpm_tis: fix potential buffer overruns caused by bit glitches on the bus
  2018-03-16 13:11 ` Greg KH
@ 2018-03-16 14:36   ` Jarkko Sakkinen
  2018-03-16 14:41     ` Greg KH
  0 siblings, 1 reply; 5+ messages in thread
From: Jarkko Sakkinen @ 2018-03-16 14:36 UTC (permalink / raw)
  To: Greg KH; +Cc: stable, Jeremy Boone, James Bottomley

On Fri, Mar 16, 2018 at 02:11:48PM +0100, Greg KH wrote:
> On Fri, Mar 16, 2018 at 02:09:40PM +0200, Jarkko Sakkinen wrote:
> > From: Jeremy Boone <jeremy.boone@nccgroup.trust>
> > 
> > commit 2c0a646268f2a3536866bf237733a52aec260594 upstream
> 
> I don't see this git commit id anywhere in Linus's tree :(

6bb320ca4a4a7b5b3db8c8d7250cc40002046878

I'm sorry about this.

/Jarkko

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] tpm_tis: fix potential buffer overruns caused by bit glitches on the bus
  2018-03-16 14:36   ` Jarkko Sakkinen
@ 2018-03-16 14:41     ` Greg KH
  2018-03-19 20:25       ` Jarkko Sakkinen
  0 siblings, 1 reply; 5+ messages in thread
From: Greg KH @ 2018-03-16 14:41 UTC (permalink / raw)
  To: Jarkko Sakkinen; +Cc: stable, Jeremy Boone, James Bottomley

On Fri, Mar 16, 2018 at 04:36:27PM +0200, Jarkko Sakkinen wrote:
> On Fri, Mar 16, 2018 at 02:11:48PM +0100, Greg KH wrote:
> > On Fri, Mar 16, 2018 at 02:09:40PM +0200, Jarkko Sakkinen wrote:
> > > From: Jeremy Boone <jeremy.boone@nccgroup.trust>
> > > 
> > > commit 2c0a646268f2a3536866bf237733a52aec260594 upstream
> > 
> > I don't see this git commit id anywhere in Linus's tree :(
> 
> 6bb320ca4a4a7b5b3db8c8d7250cc40002046878
> 
> I'm sorry about this.

Same here, can you resend this fixed up?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] tpm_tis: fix potential buffer overruns caused by bit glitches on the bus
  2018-03-16 14:41     ` Greg KH
@ 2018-03-19 20:25       ` Jarkko Sakkinen
  0 siblings, 0 replies; 5+ messages in thread
From: Jarkko Sakkinen @ 2018-03-19 20:25 UTC (permalink / raw)
  To: Greg KH; +Cc: stable, Jeremy Boone, James Bottomley

On Fri, Mar 16, 2018 at 03:41:31PM +0100, Greg KH wrote:
> On Fri, Mar 16, 2018 at 04:36:27PM +0200, Jarkko Sakkinen wrote:
> > On Fri, Mar 16, 2018 at 02:11:48PM +0100, Greg KH wrote:
> > > On Fri, Mar 16, 2018 at 02:09:40PM +0200, Jarkko Sakkinen wrote:
> > > > From: Jeremy Boone <jeremy.boone@nccgroup.trust>
> > > > 
> > > > commit 2c0a646268f2a3536866bf237733a52aec260594 upstream
> > > 
> > > I don't see this git commit id anywhere in Linus's tree :(
> > 
> > 6bb320ca4a4a7b5b3db8c8d7250cc40002046878
> > 
> > I'm sorry about this.
> 
> Same here, can you resend this fixed up?

Yeah, I'll do it tomorrow. Thanks.

/Jarkko

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-03-19 20:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-16 12:09 [PATCH] tpm_tis: fix potential buffer overruns caused by bit glitches on the bus Jarkko Sakkinen
2018-03-16 13:11 ` Greg KH
2018-03-16 14:36   ` Jarkko Sakkinen
2018-03-16 14:41     ` Greg KH
2018-03-19 20:25       ` Jarkko Sakkinen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.