2018-12-27 17:53:01 +08:00
|
|
|
From 08eef844ef4219fd956f2d1a1621a488c2072b4c Mon Sep 17 00:00:00 2001
|
2018-11-06 04:14:04 +08:00
|
|
|
From: Tomas Winkler <tomas.winkler@intel.com>
|
|
|
|
Date: Sun, 16 Sep 2018 22:29:58 +0300
|
2018-12-27 17:53:01 +08:00
|
|
|
Subject: [PATCH 57/97] tpm1: reimplement tpm1_continue_selftest() using
|
2018-11-06 04:14:04 +08:00
|
|
|
tpm_buf
|
|
|
|
|
|
|
|
Reimplement tpm1_continue_selftest() using tpm_buf structure.
|
|
|
|
This is the last command using the old tpm_cmd_t structure
|
|
|
|
and now the structure can be removed.
|
|
|
|
|
|
|
|
V3: New in the series.
|
|
|
|
V4: Resend.
|
|
|
|
V5: Fix &buf.data -> buf.data in tpm1_continue_selftest()
|
|
|
|
|
|
|
|
Change-Id: I4b740ed2b0720a35d813c7f2b6be8a020537184d
|
|
|
|
Cc: Nayna Jain <nayna@linux.vnet.ibm.com>
|
|
|
|
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
|
|
|
|
Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
|
|
|
|
Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
|
|
|
|
---
|
|
|
|
drivers/char/tpm/tpm.h | 9 ---------
|
|
|
|
drivers/char/tpm/tpm1-cmd.c | 21 ++++++++++-----------
|
|
|
|
2 files changed, 10 insertions(+), 20 deletions(-)
|
|
|
|
|
|
|
|
diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
|
|
|
|
index bf2ef1eeda50..e0778d19da98 100644
|
|
|
|
--- a/drivers/char/tpm/tpm.h
|
|
|
|
+++ b/drivers/char/tpm/tpm.h
|
|
|
|
@@ -377,15 +377,6 @@ enum tpm_sub_capabilities {
|
|
|
|
TPM_CAP_PROP_TIS_DURATION = 0x120,
|
|
|
|
};
|
|
|
|
|
|
|
|
-typedef union {
|
|
|
|
- struct tpm_input_header in;
|
|
|
|
- struct tpm_output_header out;
|
|
|
|
-} tpm_cmd_header;
|
|
|
|
-
|
|
|
|
-struct tpm_cmd_t {
|
|
|
|
- tpm_cmd_header header;
|
|
|
|
-} __packed;
|
|
|
|
-
|
|
|
|
|
|
|
|
/* 128 bytes is an arbitrary cap. This could be as large as TPM_BUFSIZE - 18
|
|
|
|
* bytes, but 128 is still a relatively large number of random bytes and
|
|
|
|
diff --git a/drivers/char/tpm/tpm1-cmd.c b/drivers/char/tpm/tpm1-cmd.c
|
|
|
|
index d418a27a75e0..6b04648f8184 100644
|
|
|
|
--- a/drivers/char/tpm/tpm1-cmd.c
|
|
|
|
+++ b/drivers/char/tpm/tpm1-cmd.c
|
|
|
|
@@ -602,15 +602,8 @@ int tpm1_pcr_read(struct tpm_chip *chip, int pcr_idx, u8 *res_buf)
|
|
|
|
}
|
|
|
|
|
|
|
|
#define TPM_ORD_CONTINUE_SELFTEST 83
|
|
|
|
-#define CONTINUE_SELFTEST_RESULT_SIZE 10
|
|
|
|
-static const struct tpm_input_header continue_selftest_header = {
|
|
|
|
- .tag = cpu_to_be16(TPM_TAG_RQU_COMMAND),
|
|
|
|
- .length = cpu_to_be32(10),
|
|
|
|
- .ordinal = cpu_to_be32(TPM_ORD_CONTINUE_SELFTEST),
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
/**
|
|
|
|
- * tpm_continue_selftest -- run TPM's selftest
|
|
|
|
+ * tpm_continue_selftest() - run TPM's selftest
|
|
|
|
* @chip: TPM chip to use
|
|
|
|
*
|
|
|
|
* Returns 0 on success, < 0 in case of fatal error or a value > 0 representing
|
|
|
|
@@ -618,12 +611,18 @@ static const struct tpm_input_header continue_selftest_header = {
|
|
|
|
*/
|
|
|
|
static int tpm1_continue_selftest(struct tpm_chip *chip)
|
|
|
|
{
|
|
|
|
+ struct tpm_buf buf;
|
|
|
|
int rc;
|
|
|
|
- struct tpm_cmd_t cmd;
|
|
|
|
|
|
|
|
- cmd.header.in = continue_selftest_header;
|
|
|
|
- rc = tpm_transmit_cmd(chip, NULL, &cmd, CONTINUE_SELFTEST_RESULT_SIZE,
|
|
|
|
+ rc = tpm_buf_init(&buf, TPM_TAG_RQU_COMMAND, TPM_ORD_CONTINUE_SELFTEST);
|
|
|
|
+ if (rc)
|
|
|
|
+ return rc;
|
|
|
|
+
|
|
|
|
+ rc = tpm_transmit_cmd(chip, NULL, buf.data, PAGE_SIZE,
|
|
|
|
0, 0, "continue selftest");
|
|
|
|
+
|
|
|
|
+ tpm_buf_destroy(&buf);
|
|
|
|
+
|
|
|
|
return rc;
|
|
|
|
}
|
|
|
|
|
|
|
|
--
|
2018-12-27 17:53:01 +08:00
|
|
|
2.19.1
|
2018-11-06 04:14:04 +08:00
|
|
|
|