All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomas Winkler <tomas.winkler@intel.com>
To: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
	Jason Gunthorpe <jgg@ziepe.ca>
Cc: Alexander Usyskin <alexander.usyskin@intel.com>,
	Tadeusz Struk <tadeusz.struk@intel.com>,
	linux-integrity@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Tomas Winkler <tomas.winkler@intel.com>
Subject: [PATCH v3 12/20] tpm: move pcr extend code to tpm2-cmd.c
Date: Tue, 18 Sep 2018 12:34:51 +0300	[thread overview]
Message-ID: <20180918093459.19165-13-tomas.winkler@intel.com> (raw)
In-Reply-To: <20180918093459.19165-1-tomas.winkler@intel.com>

Add tpm2_pcr_extend() function to tpm2-cmd.c with signature required
by tpm-interface.c. It wraps the original open code
implementation. The original original tpm2_pcr_extend() function
is renamed and made static, called only from new tpm2_pcr_extend()

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
V3: fix commit message
 drivers/char/tpm/tpm-interface.c | 24 +++++-------------------
 drivers/char/tpm/tpm.h           |  3 +--
 drivers/char/tpm/tpm1-cmd.c      |  1 +
 drivers/char/tpm/tpm2-cmd.c      | 24 ++++++++++++++++++++++--
 4 files changed, 29 insertions(+), 23 deletions(-)

diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
index 3a2eef9e8665..54e2cc592bd9 100644
--- a/drivers/char/tpm/tpm-interface.c
+++ b/drivers/char/tpm/tpm-interface.c
@@ -481,31 +481,17 @@ EXPORT_SYMBOL_GPL(tpm_pcr_read);
 int tpm_pcr_extend(struct tpm_chip *chip, int pcr_idx, const u8 *hash)
 {
 	int rc;
-	struct tpm2_digest digest_list[ARRAY_SIZE(chip->active_banks)];
-	u32 count = 0;
-	int i;
 
 	chip = tpm_find_get_ops(chip);
 	if (!chip)
 		return -ENODEV;
 
-	if (chip->flags & TPM_CHIP_FLAG_TPM2) {
-		memset(digest_list, 0, sizeof(digest_list));
-
-		for (i = 0; i < ARRAY_SIZE(chip->active_banks) &&
-			    chip->active_banks[i] != TPM2_ALG_ERROR; i++) {
-			digest_list[i].alg_id = chip->active_banks[i];
-			memcpy(digest_list[i].digest, hash, TPM_DIGEST_SIZE);
-			count++;
-		}
-
-		rc = tpm2_pcr_extend(chip, pcr_idx, count, digest_list);
-		tpm_put_ops(chip);
-		return rc;
-	}
+	if (chip->flags & TPM_CHIP_FLAG_TPM2)
+		rc = tpm2_pcr_extend(chip, pcr_idx, hash);
+	else
+		rc = tpm1_pcr_extend(chip, pcr_idx, hash,
+				     "attempting extend a PCR value");
 
-	rc = tpm1_pcr_extend(chip, pcr_idx, hash,
-			     "attempting extend a PCR value");
 	tpm_put_ops(chip);
 	return rc;
 }
diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
index fa88102a0cab..f0963a0a8acd 100644
--- a/drivers/char/tpm/tpm.h
+++ b/drivers/char/tpm/tpm.h
@@ -592,8 +592,7 @@ static inline u32 tpm2_rc_value(u32 rc)
 
 int tpm2_get_timeouts(struct tpm_chip *chip);
 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, u32 count,
-		    struct tpm2_digest *digests);
+int tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, const u8 *hash);
 int tpm2_get_random(struct tpm_chip *chip, u8 *dest, size_t max);
 void tpm2_flush_context_cmd(struct tpm_chip *chip, u32 handle,
 			    unsigned int flags);
diff --git a/drivers/char/tpm/tpm1-cmd.c b/drivers/char/tpm/tpm1-cmd.c
index f93776621e49..90e5bc1720ad 100644
--- a/drivers/char/tpm/tpm1-cmd.c
+++ b/drivers/char/tpm/tpm1-cmd.c
@@ -466,6 +466,7 @@ int tpm1_pcr_extend(struct tpm_chip *chip, int pcr_idx, const u8 *hash,
 
 	rc = tpm_transmit_cmd(chip, NULL, buf.data, EXTEND_PCR_RESULT_SIZE,
 			      EXTEND_PCR_RESULT_BODY_SIZE, 0, log_msg);
+
 	tpm_buf_destroy(&buf);
 	return rc;
 }
diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
index 333631eab4c7..b0b714309440 100644
--- a/drivers/char/tpm/tpm2-cmd.c
+++ b/drivers/char/tpm/tpm2-cmd.c
@@ -178,8 +178,8 @@ struct tpm2_null_auth_area {
  *
  * Return: Same as with tpm_transmit_cmd.
  */
-int tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, u32 count,
-		    struct tpm2_digest *digests)
+static int __tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, u32 count,
+			     struct tpm2_digest *digests)
 {
 	struct tpm_buf buf;
 	struct tpm2_null_auth_area auth_area;
@@ -225,6 +225,26 @@ int tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, u32 count,
 	return rc;
 }
 
+int tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, const u8 *hash)
+{
+	int rc;
+	struct tpm2_digest digest_list[ARRAY_SIZE(chip->active_banks)];
+	u32 count = 0;
+	unsigned int i;
+
+	memset(digest_list, 0, sizeof(digest_list));
+	for (i = 0; i < ARRAY_SIZE(chip->active_banks); i++) {
+		if (chip->active_banks[i] == TPM2_ALG_ERROR)
+			break;
+		digest_list[i].alg_id = chip->active_banks[i];
+		memcpy(digest_list[i].digest, hash, TPM_DIGEST_SIZE);
+		count++;
+	}
+
+	rc = __tpm2_pcr_extend(chip, pcr_idx, count, digest_list);
+	return rc;
+}
+
 
 struct tpm2_get_random_out {
 	__be16 size;
-- 
2.14.4


WARNING: multiple messages have this Message-ID (diff)
From: tomas.winkler@intel.com (Tomas Winkler)
To: linux-security-module@vger.kernel.org
Subject: [PATCH v3 12/20] tpm: move pcr extend code to tpm2-cmd.c
Date: Tue, 18 Sep 2018 12:34:51 +0300	[thread overview]
Message-ID: <20180918093459.19165-13-tomas.winkler@intel.com> (raw)
In-Reply-To: <20180918093459.19165-1-tomas.winkler@intel.com>

Add tpm2_pcr_extend() function to tpm2-cmd.c with signature required
by tpm-interface.c. It wraps the original open code
implementation. The original original tpm2_pcr_extend() function
is renamed and made static, called only from new tpm2_pcr_extend()

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
---
V3: fix commit message
 drivers/char/tpm/tpm-interface.c | 24 +++++-------------------
 drivers/char/tpm/tpm.h           |  3 +--
 drivers/char/tpm/tpm1-cmd.c      |  1 +
 drivers/char/tpm/tpm2-cmd.c      | 24 ++++++++++++++++++++++--
 4 files changed, 29 insertions(+), 23 deletions(-)

diff --git a/drivers/char/tpm/tpm-interface.c b/drivers/char/tpm/tpm-interface.c
index 3a2eef9e8665..54e2cc592bd9 100644
--- a/drivers/char/tpm/tpm-interface.c
+++ b/drivers/char/tpm/tpm-interface.c
@@ -481,31 +481,17 @@ EXPORT_SYMBOL_GPL(tpm_pcr_read);
 int tpm_pcr_extend(struct tpm_chip *chip, int pcr_idx, const u8 *hash)
 {
 	int rc;
-	struct tpm2_digest digest_list[ARRAY_SIZE(chip->active_banks)];
-	u32 count = 0;
-	int i;
 
 	chip = tpm_find_get_ops(chip);
 	if (!chip)
 		return -ENODEV;
 
-	if (chip->flags & TPM_CHIP_FLAG_TPM2) {
-		memset(digest_list, 0, sizeof(digest_list));
-
-		for (i = 0; i < ARRAY_SIZE(chip->active_banks) &&
-			    chip->active_banks[i] != TPM2_ALG_ERROR; i++) {
-			digest_list[i].alg_id = chip->active_banks[i];
-			memcpy(digest_list[i].digest, hash, TPM_DIGEST_SIZE);
-			count++;
-		}
-
-		rc = tpm2_pcr_extend(chip, pcr_idx, count, digest_list);
-		tpm_put_ops(chip);
-		return rc;
-	}
+	if (chip->flags & TPM_CHIP_FLAG_TPM2)
+		rc = tpm2_pcr_extend(chip, pcr_idx, hash);
+	else
+		rc = tpm1_pcr_extend(chip, pcr_idx, hash,
+				     "attempting extend a PCR value");
 
-	rc = tpm1_pcr_extend(chip, pcr_idx, hash,
-			     "attempting extend a PCR value");
 	tpm_put_ops(chip);
 	return rc;
 }
diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
index fa88102a0cab..f0963a0a8acd 100644
--- a/drivers/char/tpm/tpm.h
+++ b/drivers/char/tpm/tpm.h
@@ -592,8 +592,7 @@ static inline u32 tpm2_rc_value(u32 rc)
 
 int tpm2_get_timeouts(struct tpm_chip *chip);
 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, u32 count,
-		    struct tpm2_digest *digests);
+int tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, const u8 *hash);
 int tpm2_get_random(struct tpm_chip *chip, u8 *dest, size_t max);
 void tpm2_flush_context_cmd(struct tpm_chip *chip, u32 handle,
 			    unsigned int flags);
diff --git a/drivers/char/tpm/tpm1-cmd.c b/drivers/char/tpm/tpm1-cmd.c
index f93776621e49..90e5bc1720ad 100644
--- a/drivers/char/tpm/tpm1-cmd.c
+++ b/drivers/char/tpm/tpm1-cmd.c
@@ -466,6 +466,7 @@ int tpm1_pcr_extend(struct tpm_chip *chip, int pcr_idx, const u8 *hash,
 
 	rc = tpm_transmit_cmd(chip, NULL, buf.data, EXTEND_PCR_RESULT_SIZE,
 			      EXTEND_PCR_RESULT_BODY_SIZE, 0, log_msg);
+
 	tpm_buf_destroy(&buf);
 	return rc;
 }
diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
index 333631eab4c7..b0b714309440 100644
--- a/drivers/char/tpm/tpm2-cmd.c
+++ b/drivers/char/tpm/tpm2-cmd.c
@@ -178,8 +178,8 @@ struct tpm2_null_auth_area {
  *
  * Return: Same as with tpm_transmit_cmd.
  */
-int tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, u32 count,
-		    struct tpm2_digest *digests)
+static int __tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, u32 count,
+			     struct tpm2_digest *digests)
 {
 	struct tpm_buf buf;
 	struct tpm2_null_auth_area auth_area;
@@ -225,6 +225,26 @@ int tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, u32 count,
 	return rc;
 }
 
+int tpm2_pcr_extend(struct tpm_chip *chip, int pcr_idx, const u8 *hash)
+{
+	int rc;
+	struct tpm2_digest digest_list[ARRAY_SIZE(chip->active_banks)];
+	u32 count = 0;
+	unsigned int i;
+
+	memset(digest_list, 0, sizeof(digest_list));
+	for (i = 0; i < ARRAY_SIZE(chip->active_banks); i++) {
+		if (chip->active_banks[i] == TPM2_ALG_ERROR)
+			break;
+		digest_list[i].alg_id = chip->active_banks[i];
+		memcpy(digest_list[i].digest, hash, TPM_DIGEST_SIZE);
+		count++;
+	}
+
+	rc = __tpm2_pcr_extend(chip, pcr_idx, count, digest_list);
+	return rc;
+}
+
 
 struct tpm2_get_random_out {
 	__be16 size;
-- 
2.14.4

  parent reply	other threads:[~2018-09-18  9:39 UTC|newest]

Thread overview: 93+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-18  9:34 [PATCH v3 00/20] tpm: separate tpm 1.x and tpm 2.x commands Tomas Winkler
2018-09-18  9:34 ` Tomas Winkler
2018-09-18  9:34 ` [PATCH v3 01/20] tpm2: add new tpm2 commands according to TCG 1.36 Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
     [not found]   ` <20180919134627.GA26571@linux.intel.com>
2018-09-19 13:59     ` Jarkko Sakkinen
2018-09-19 13:59       ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 02/20] tpm: sort objects in the Makefile Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 13:48   ` Jarkko Sakkinen
2018-09-19 13:48     ` Jarkko Sakkinen
2018-09-19 13:59     ` Jarkko Sakkinen
2018-09-19 13:59       ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 03/20] tpm: factor out tpm 1.x duration calculation to tpm1-cmd.c Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 13:55   ` Jarkko Sakkinen
2018-09-19 13:55     ` Jarkko Sakkinen
2018-09-19 14:00     ` Jarkko Sakkinen
2018-09-19 14:00       ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 04/20] tpm: add tpm_calc_ordinal_duration wrapper Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 14:02   ` Jarkko Sakkinen
2018-09-19 14:02     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 05/20] tpm: factor out tpm_get_timeouts Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 14:04   ` Jarkko Sakkinen
2018-09-19 14:04     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 06/20] tpm: move tpm1_pcr_extend to tpm1-cmd.c Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 14:06   ` Jarkko Sakkinen
2018-09-19 14:06     ` Jarkko Sakkinen
2018-09-19 14:06     ` Jarkko Sakkinen
2018-09-25 16:25     ` Nayna Jain
2018-09-25 16:25       ` Nayna Jain
2018-09-25 16:25       ` Nayna Jain
2018-09-18  9:34 ` [PATCH v3 07/20] tpm: move tpm_getcap " Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 14:09   ` Jarkko Sakkinen
2018-09-19 14:09     ` Jarkko Sakkinen
2018-09-19 14:09     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 08/20] tpm: factor out tpm1_get_random into tpm1-cmd.c Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 14:56   ` Jarkko Sakkinen
2018-09-19 14:56     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 09/20] tpm: move tpm1 selftest code from tpm-interface tpm1-cmd.c Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 15:05   ` Jarkko Sakkinen
2018-09-19 15:05     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 10/20] tpm: factor out tpm1 pm suspend flow into tpm1-cmd.c Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 15:03   ` Jarkko Sakkinen
2018-09-19 15:03     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 11/20] tpm: factor out tpm_startup function Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 15:07   ` Jarkko Sakkinen
2018-09-19 15:07     ` Jarkko Sakkinen
2018-09-18  9:34 ` Tomas Winkler [this message]
2018-09-18  9:34   ` [PATCH v3 12/20] tpm: move pcr extend code to tpm2-cmd.c Tomas Winkler
2018-09-19 14:58   ` Jarkko Sakkinen
2018-09-19 14:58     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 13/20] tpm: add tpm_auto_startup into tpm-interface Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 15:09   ` Jarkko Sakkinen
2018-09-19 15:09     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 14/20] tpm: tpm-interface.c drop unused macros Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 15:10   ` Jarkko Sakkinen
2018-09-19 15:10     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 15/20] tpm: tpm-space.c remove unneeded semicolon Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 15:12   ` Jarkko Sakkinen
2018-09-19 15:12     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 16/20] tpm: tpm1: rewrite tpm1_get_random() using tpm_buf structure Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 15:12   ` Jarkko Sakkinen
2018-09-19 15:12     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 17/20] tpm1: implement tpm1_pcr_read_dev() " Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 15:13   ` Jarkko Sakkinen
2018-09-19 15:13     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 18/20] tpm: use u32 instead of int for pcr index Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 15:22   ` Jarkko Sakkinen
2018-09-19 15:22     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 19/20] tpm1: reimplement SAVESTATE using tpm_buf Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 15:23   ` Jarkko Sakkinen
2018-09-19 15:23     ` Jarkko Sakkinen
2018-09-18  9:34 ` [PATCH v3 20/20] tpm1: reimplement tpm1_continue_selftest() " Tomas Winkler
2018-09-18  9:34   ` Tomas Winkler
2018-09-19 15:24   ` Jarkko Sakkinen
2018-09-19 15:24     ` Jarkko Sakkinen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180918093459.19165-13-tomas.winkler@intel.com \
    --to=tomas.winkler@intel.com \
    --cc=alexander.usyskin@intel.com \
    --cc=jarkko.sakkinen@linux.intel.com \
    --cc=jgg@ziepe.ca \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=tadeusz.struk@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.