diff options
-rw-r--r-- | src/lib/tpm2_marshaling.c | 23 | ||||
-rw-r--r-- | src/lib/tpm2_tlcl.c | 2 |
2 files changed, 13 insertions, 12 deletions
diff --git a/src/lib/tpm2_marshaling.c b/src/lib/tpm2_marshaling.c index f4fd3cbc76..1edc69007a 100644 --- a/src/lib/tpm2_marshaling.c +++ b/src/lib/tpm2_marshaling.c @@ -546,7 +546,8 @@ struct tpm2_response *tpm_unmarshal_response(TPM_CC command, void *response_body, size_t in_size) { - static struct tpm2_response tpm2_resp; + static struct tpm2_response tpm2_static_resp CAR_GLOBAL; + struct tpm2_response *tpm2_resp = car_get_var_ptr(&tpm2_static_resp); /* * Should be 0 when done, positive and negaitive values indicate * unmarshaling errors. @@ -556,16 +557,16 @@ struct tpm2_response *tpm_unmarshal_response(TPM_CC command, if ((cr_size < 0) || (in_size < sizeof(struct tpm_header))) return NULL; - tpm2_resp.hdr.tpm_tag = unmarshal_u16(&response_body, &cr_size); - tpm2_resp.hdr.tpm_size = unmarshal_u32(&response_body, &cr_size); - tpm2_resp.hdr.tpm_code = unmarshal_TPM_CC(&response_body, &cr_size); + tpm2_resp->hdr.tpm_tag = unmarshal_u16(&response_body, &cr_size); + tpm2_resp->hdr.tpm_size = unmarshal_u32(&response_body, &cr_size); + tpm2_resp->hdr.tpm_code = unmarshal_TPM_CC(&response_body, &cr_size); if (!cr_size) { - if (tpm2_resp.hdr.tpm_size != sizeof(tpm2_resp.hdr)) + if (tpm2_resp->hdr.tpm_size != sizeof(tpm2_resp->hdr)) printk(BIOS_ERR, "%s: size mismatch in response to command %#x\n", __func__, command); - return &tpm2_resp; + return tpm2_resp; } switch (command) { @@ -574,12 +575,12 @@ struct tpm2_response *tpm_unmarshal_response(TPM_CC command, case TPM2_GetCapability: unmarshal_get_capability(&response_body, &cr_size, - &tpm2_resp.gc); + &tpm2_resp->gc); break; case TPM2_NV_Read: unmarshal_nv_read(&response_body, &cr_size, - &tpm2_resp.nvr); + &tpm2_resp->nvr); break; case TPM2_Clear: @@ -599,7 +600,7 @@ struct tpm2_response *tpm_unmarshal_response(TPM_CC command, "Request to unmarshal unexpected command %#x," " code %#x", __func__, __LINE__, command, - tpm2_resp.hdr.tpm_code); + tpm2_resp->hdr.tpm_code); for (i = 0; i < cr_size; i++) { if (!(i % 16)) @@ -616,11 +617,11 @@ struct tpm2_response *tpm_unmarshal_response(TPM_CC command, printk(BIOS_INFO, "%s:%d got %d bytes back in response to %#x," " failed to parse (%d)\n", - __func__, __LINE__, tpm2_resp.hdr.tpm_size, + __func__, __LINE__, tpm2_resp->hdr.tpm_size, command, cr_size); return NULL; } /* The entire message have been parsed. */ - return &tpm2_resp; + return tpm2_resp; } diff --git a/src/lib/tpm2_tlcl.c b/src/lib/tpm2_tlcl.c index 7bfd40d810..b6017a2a98 100644 --- a/src/lib/tpm2_tlcl.c +++ b/src/lib/tpm2_tlcl.c @@ -290,7 +290,7 @@ uint32_t tlcl_define_space(uint32_t space_index, size_t space_size) * This policy digest was obtained using TPM2_PolicyPCR selecting only * PCR_0 with a value of all zeros. */ - static const uint8_t pcr0_unchanged_policy[] = { + const uint8_t pcr0_unchanged_policy[] = { 0x09, 0x93, 0x3C, 0xCE, 0xEB, 0xB4, 0x41, 0x11, 0x18, 0x81, 0x1D, 0xD4, 0x47, 0x78, 0x80, 0x08, 0x88, 0x86, 0x62, 0x2D, 0xD7, 0x79, 0x94, 0x46, |