Skip to contentSkip to conversation

Patch "tpm: fix RC value check in tpm2_seal_trusted" has been added to the 4.10-stable tree

PATCH [email protected] 1 participant 1 message May 9, 2017

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

tpm: fix RC value check in tpm2_seal_trusted

to the 4.10-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
tpm-fix-rc-value-check-in-tpm2_seal_trusted.patch
and it can be found in the queue-4.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 7d761119a914ec0ac05ec2a5378d1f86e680967d Mon Sep 17 00:00:00 2001

From: Jarkko Sakkinen <[email protected]>
Date: Wed, 25 Jan 2017 23:00:22 +0200
Subject: tpm: fix RC value check in tpm2_seal_trusted

From: Jarkko Sakkinen <[email protected]>

commit 7d761119a914ec0ac05ec2a5378d1f86e680967d upstream.

The error code handling is broken as any error code that has the same bits set as TPM_RC_HASH passes. Implemented tpm2_rc_value() helper to parse the error value from FMT0 and FMT1 error codes so that these types of mistakes are prevented in the future.

Fixes 5ca4c20cfd37 ("keys, trusted: select hash algorithm for TPM2 chips")
---
 drivers/char/tpm/tpm.h      |    5 +++++
 drivers/char/tpm/tpm2-cmd.c |    2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)
drivers/char/tpm/tpm.h +5 -0
@@ -529,6 +529,11 @@ static inline void tpm_add_ppi(struct tp
 }
 #endif
 
+static inline inline u32 tpm2_rc_value(u32 rc)
+{
+	return (rc & BIT(7)) ? rc & 0xff : rc;
+}
+
 int tpm2_pcr_read(struct tpm_chip *chip, int pcr_idx, u8 *res_buf);
 int tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, const u8 *hash);
 int tpm2_get_random(struct tpm_chip *chip, u8 *out, size_t max);
drivers/char/tpm/tpm2-cmd.c +1 -1
@@ -529,7 +529,7 @@ out:
 	tpm_buf_destroy(&buf);
 
 	if (rc > 0) {
-		if ((rc & TPM2_RC_HASH) == TPM2_RC_HASH)
+		if (tpm2_rc_value(rc) == TPM2_RC_HASH)
 			rc = -EINVAL;
 		else
 			rc = -EPERM;

Patches currently in stable-queue which might be from [email protected] are

queue-4.10/tpm-fix-rc-value-check-in-tpm2_seal_trusted.patch queue-4.10/tmp-use-pdev-for-parent-device-in-tpm_chip_alloc.patch