diff options
author | Vadim Bendebury <vbendeb@chromium.org> | 2016-07-06 08:55:12 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-07-06 23:00:43 -0700 |
commit | 452973e5f45014162c273e13ad973d38f58404b0 (patch) | |
tree | 5e90530c6eac7811c55486aa7e8ac36e81534192 | |
parent | 25589e5a1e07398238b514eb60a543ea8108e278 (diff) | |
download | vboot-452973e5f45014162c273e13ad973d38f58404b0.tar.gz |
tpm2: refactor tpm2 return value processing
There is no point in checking and reporting error code in each
function calling tpm_process_command(), let's do it in one place for
all commands.
BRANCH=none
BUG=chrome-os-partner:50645
TEST=Kevin still boots to chrome os
Change-Id: I10f45bd15df293f63401c295c5dce833543c50da
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/358174
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Darren Krahn <dkrahn@chromium.org>
-rw-r--r-- | firmware/lib/tpm2_lite/tlcl.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/firmware/lib/tpm2_lite/tlcl.c b/firmware/lib/tpm2_lite/tlcl.c index ce65c6ce..5202c600 100644 --- a/firmware/lib/tpm2_lite/tlcl.c +++ b/firmware/lib/tpm2_lite/tlcl.c @@ -10,11 +10,13 @@ #include "tpm2_marshaling.h" #include "utility.h" -static void *tpm_process_command(TPM_CC command, void *command_body) +static struct tpm2_response *tpm_process_command(TPM_CC command, + void *command_body) { /* Command/response buffer. */ static uint8_t cr_buffer[TPM_BUFFER_SIZE]; uint32_t out_size, in_size; + struct tpm2_response *response; out_size = tpm_marshal_command(command, command_body, cr_buffer, sizeof(cr_buffer)); @@ -27,11 +29,16 @@ static void *tpm_process_command(TPM_CC command, void *command_body) in_size = sizeof(cr_buffer); if (VbExTpmSendReceive(cr_buffer, out_size, cr_buffer, &in_size) != TPM_SUCCESS) { - VBDEBUG(("tpm transaction failed\n")); + VBDEBUG(("tpm transaction failed for %#x\n", command)); return NULL; } - return tpm_unmarshal_response(command, cr_buffer, in_size); + response = tpm_unmarshal_response(command, cr_buffer, in_size); + + VBDEBUG(("%s: command %#x, return code %#x\n", __func__, command, + response ? response->hdr.tpm_code : -1)); + + return response; } /** @@ -92,8 +99,6 @@ uint32_t TlclRead(uint32_t index, void* data, uint32_t length) if (!response) return TPM_E_READ_FAILURE; - VBDEBUG(("%s:%d index %#x return code %x\n", - __FILE__, __LINE__, index, response->hdr.tpm_code)); switch (response->hdr.tpm_code) { case 0: break; @@ -133,8 +138,5 @@ uint32_t TlclWrite(uint32_t index, const void *data, uint32_t length) if (!response) return TPM_E_WRITE_FAILURE; - VBDEBUG(("%s:%d return code %x\n", __func__, __LINE__, - response->hdr.tpm_code)); - return TPM_SUCCESS; } |