diff options
Diffstat (limited to 'meta/recipes-devtools/qemu/qemu/0009-tpm-passthrough-move-reusable-code-to-utils.patch')
-rw-r--r-- | meta/recipes-devtools/qemu/qemu/0009-tpm-passthrough-move-reusable-code-to-utils.patch | 182 |
1 files changed, 0 insertions, 182 deletions
diff --git a/meta/recipes-devtools/qemu/qemu/0009-tpm-passthrough-move-reusable-code-to-utils.patch b/meta/recipes-devtools/qemu/qemu/0009-tpm-passthrough-move-reusable-code-to-utils.patch deleted file mode 100644 index 8670b8a0d3..0000000000 --- a/meta/recipes-devtools/qemu/qemu/0009-tpm-passthrough-move-reusable-code-to-utils.patch +++ /dev/null @@ -1,182 +0,0 @@ -From b8322aaa2f31995e1b7b776e7efae68416573bc3 Mon Sep 17 00:00:00 2001 -From: Amarnath Valluri <amarnath.valluri@intel.com> -Date: Wed, 29 Mar 2017 15:36:47 +0300 -Subject: [PATCH 09/12] tpm-passthrough: move reusable code to utils -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com> -Reviewed-by: Stefan Berger <stefanb@linux.vnet.ibm.com> -Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> - -Upstream-Status: Backport [4a3d80980ebf71d8faf9d0ce2e2e23bdda5728df] ---- - hw/tpm/tpm_passthrough.c | 64 ++++-------------------------------------------- - hw/tpm/tpm_util.c | 25 +++++++++++++++++++ - hw/tpm/tpm_util.h | 4 +++ - 3 files changed, 34 insertions(+), 59 deletions(-) - -diff --git a/hw/tpm/tpm_passthrough.c b/hw/tpm/tpm_passthrough.c -index 22d3460550..e6ace28b04 100644 ---- a/hw/tpm/tpm_passthrough.c -+++ b/hw/tpm/tpm_passthrough.c -@@ -68,27 +68,6 @@ typedef struct TPMPassthruState TPMPassthruState; - - static void tpm_passthrough_cancel_cmd(TPMBackend *tb); - --static int tpm_passthrough_unix_write(int fd, const uint8_t *buf, uint32_t len) --{ -- int ret, remain; -- -- remain = len; -- while (remain > 0) { -- ret = write(fd, buf, remain); -- if (ret < 0) { -- if (errno != EINTR && errno != EAGAIN) { -- return -1; -- } -- } else if (ret == 0) { -- break; -- } else { -- buf += ret; -- remain -= ret; -- } -- } -- return len - remain; --} -- - static int tpm_passthrough_unix_read(int fd, uint8_t *buf, uint32_t len) - { - int ret; -@@ -102,45 +81,12 @@ static int tpm_passthrough_unix_read(int fd, uint8_t *buf, uint32_t len) - } - return ret; - } -- --static uint32_t tpm_passthrough_get_size_from_buffer(const uint8_t *buf) --{ -- struct tpm_resp_hdr *resp = (struct tpm_resp_hdr *)buf; -- -- return be32_to_cpu(resp->len); --} -- --/* -- * Write an error message in the given output buffer. -- */ --static void tpm_write_fatal_error_response(uint8_t *out, uint32_t out_len) --{ -- if (out_len >= sizeof(struct tpm_resp_hdr)) { -- struct tpm_resp_hdr *resp = (struct tpm_resp_hdr *)out; -- -- resp->tag = cpu_to_be16(TPM_TAG_RSP_COMMAND); -- resp->len = cpu_to_be32(sizeof(struct tpm_resp_hdr)); -- resp->errcode = cpu_to_be32(TPM_FAIL); -- } --} -- --static bool tpm_passthrough_is_selftest(const uint8_t *in, uint32_t in_len) --{ -- struct tpm_req_hdr *hdr = (struct tpm_req_hdr *)in; -- -- if (in_len >= sizeof(*hdr)) { -- return (be32_to_cpu(hdr->ordinal) == TPM_ORD_ContinueSelfTest); -- } -- -- return false; --} -- - static int tpm_passthrough_unix_tx_bufs(TPMPassthruState *tpm_pt, - const uint8_t *in, uint32_t in_len, - uint8_t *out, uint32_t out_len, - bool *selftest_done) - { -- int ret; -+ ssize_t ret; - bool is_selftest; - const struct tpm_resp_hdr *hdr; - -@@ -148,9 +94,9 @@ static int tpm_passthrough_unix_tx_bufs(TPMPassthruState *tpm_pt, - tpm_pt->tpm_executing = true; - *selftest_done = false; - -- is_selftest = tpm_passthrough_is_selftest(in, in_len); -+ is_selftest = tpm_util_is_selftest(in, in_len); - -- ret = tpm_passthrough_unix_write(tpm_pt->tpm_fd, in, in_len); -+ ret = qemu_write_full(tpm_pt->tpm_fd, (const void *)in, (size_t)in_len); - if (ret != in_len) { - if (!tpm_pt->tpm_op_canceled || errno != ECANCELED) { - error_report("tpm_passthrough: error while transmitting data " -@@ -170,7 +116,7 @@ static int tpm_passthrough_unix_tx_bufs(TPMPassthruState *tpm_pt, - strerror(errno), errno); - } - } else if (ret < sizeof(struct tpm_resp_hdr) || -- tpm_passthrough_get_size_from_buffer(out) != ret) { -+ be32_to_cpu(((struct tpm_resp_hdr *)out)->len) != ret) { - ret = -1; - error_report("tpm_passthrough: received invalid response " - "packet from TPM"); -@@ -183,7 +129,7 @@ static int tpm_passthrough_unix_tx_bufs(TPMPassthruState *tpm_pt, - - err_exit: - if (ret < 0) { -- tpm_write_fatal_error_response(out, out_len); -+ tpm_util_write_fatal_error_response(out, out_len); - } - - tpm_pt->tpm_executing = false; -diff --git a/hw/tpm/tpm_util.c b/hw/tpm/tpm_util.c -index 7b35429725..fb929f6e92 100644 ---- a/hw/tpm/tpm_util.c -+++ b/hw/tpm/tpm_util.c -@@ -24,6 +24,31 @@ - #include "tpm_int.h" - - /* -+ * Write an error message in the given output buffer. -+ */ -+void tpm_util_write_fatal_error_response(uint8_t *out, uint32_t out_len) -+{ -+ if (out_len >= sizeof(struct tpm_resp_hdr)) { -+ struct tpm_resp_hdr *resp = (struct tpm_resp_hdr *)out; -+ -+ resp->tag = cpu_to_be16(TPM_TAG_RSP_COMMAND); -+ resp->len = cpu_to_be32(sizeof(struct tpm_resp_hdr)); -+ resp->errcode = cpu_to_be32(TPM_FAIL); -+ } -+} -+ -+bool tpm_util_is_selftest(const uint8_t *in, uint32_t in_len) -+{ -+ struct tpm_req_hdr *hdr = (struct tpm_req_hdr *)in; -+ -+ if (in_len >= sizeof(*hdr)) { -+ return (be32_to_cpu(hdr->ordinal) == TPM_ORD_ContinueSelfTest); -+ } -+ -+ return false; -+} -+ -+/* - * A basic test of a TPM device. We expect a well formatted response header - * (error response is fine) within one second. - */ -diff --git a/hw/tpm/tpm_util.h b/hw/tpm/tpm_util.h -index df76245e6e..2f7c96146d 100644 ---- a/hw/tpm/tpm_util.h -+++ b/hw/tpm/tpm_util.h -@@ -24,6 +24,10 @@ - - #include "sysemu/tpm_backend.h" - -+void tpm_util_write_fatal_error_response(uint8_t *out, uint32_t out_len); -+ -+bool tpm_util_is_selftest(const uint8_t *in, uint32_t in_len); -+ - int tpm_util_test_tpmdev(int tpm_fd, TPMVersion *tpm_version); - - #endif /* TPM_TPM_UTIL_H */ --- -2.11.0 - |