From 635537dba33dfb78f4383d9271d52def17b31a95 Mon Sep 17 00:00:00 2001 From: Claudio Carvalho Date: Tue, 1 Nov 2016 20:40:27 -0200 Subject: tpm_extendl: don't measure when no tpm is registered This fixes tpm_extendl() to measure only when the list of registered tpms is not empty. Fixes: 3837c6f0cf4cffb5de874413eed755c0c698b076 Signed-off-by: Claudio Carvalho Signed-off-by: Stewart Smith --- libstb/status_codes.h | 1 + libstb/tpm_chip.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/libstb/status_codes.h b/libstb/status_codes.h index e67c17b..4896132 100644 --- a/libstb/status_codes.h +++ b/libstb/status_codes.h @@ -31,6 +31,7 @@ #define STB_MEASURE_FAILED -200 /* TPM */ +#define STB_NO_TPM_INITIALIZED 300 #define STB_TPM_OVERFLOW -300 #define STB_TPM_TIMEOUT -301 diff --git a/libstb/tpm_chip.c b/libstb/tpm_chip.c index d387ea0..6791f4c 100644 --- a/libstb/tpm_chip.c +++ b/libstb/tpm_chip.c @@ -187,12 +187,12 @@ void tpm_init(void) if (list_empty(&tpm_list)) /** - * @fwts-label TPMNotInitialized + * @fwts-label NoTPMRegistered * @fwts-advice No TPM chip has been initialized. We may not * have a compatible tpm driver or there is no tpm node in the * device tree with the expected bindings. */ - prlog(PR_ERR, "TPM: no tpm chip has been initialized\n"); + prlog(PR_ERR, "TPM: no tpm chip registered\n"); } @@ -233,6 +233,12 @@ int tpm_extendl(TPM_Pcr pcr, measured = 0; failed = 0; + if (list_empty(&tpm_list)) { + prlog(PR_NOTICE, "TPM: %s (pcr%d) not measured. No TPM " + "registered/enabled\n", event_msg, pcr); + return STB_NO_TPM_INITIALIZED; + } + list_for_each(&tpm_list, tpm, link) { if (!tpm->enabled) continue; -- cgit v1.1