From c870cf3dbe00e887ffc816c9345818b530192d09 Mon Sep 17 00:00:00 2001 From: Vadim Sukhomlinov Date: Tue, 7 Jul 2020 15:02:52 -0700 Subject: tpm_nvmem_ops.c: fix read_tpm_nvmem_size() to work with hidden objects In https://crrev.com/c/2258534 fix read_tpm_nvmem_size() was introduced, however it failed to properly return size of hidden objects, and code worked because it was masked by prior check of size for nvmem variable with getvar(), and these variables were always set together. This fix relies on https://crrev.com/c/2280405 for tpm2 to add proper service function. BUG=None TEST=manual, tested in upcoming change in cr50/board/u2f.c Cq-Depend: chromium:2280405 Signed-off-by: Vadim Sukhomlinov Change-Id: I38cfbf97e5cc99907c05887345017db92c5abc72 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2285432 Tested-by: Vadim Sukhomlinov Auto-Submit: Vadim Sukhomlinov Reviewed-by: Vadim Bendebury Reviewed-by: Vadim Sukhomlinov Commit-Queue: Vadim Sukhomlinov --- board/cr50/tpm_nvmem_ops.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/board/cr50/tpm_nvmem_ops.c b/board/cr50/tpm_nvmem_ops.c index ed5d438204..ba295c7f4f 100644 --- a/board/cr50/tpm_nvmem_ops.c +++ b/board/cr50/tpm_nvmem_ops.c @@ -100,18 +100,11 @@ enum tpm_write_rv write_tpm_nvmem_hidden(uint16_t object_index, size_t read_tpm_nvmem_size(uint16_t obj_index) { - TPM_HANDLE object_handle; - NV_INDEX nvIndex; - uint32_t handle_addr; + UINT16 size; - object_handle = HR_NV_INDEX | obj_index; - - handle_addr = NvEarlyStageFindHandle(object_handle); - if (!handle_addr) + if (NvGetHiddenObjectSize(HR_HIDDEN | obj_index, &size) != + TPM_RC_SUCCESS) return 0; - /* Get properties of this index as stored in nvmem. */ - NvReadIndexInfo(object_handle, handle_addr, &nvIndex); - - return nvIndex.publicArea.dataSize; + return size; } -- cgit v1.2.1