aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudio Carvalho <cclaudio@linux.vnet.ibm.com>2016-11-01 20:40:27 -0200
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-11-02 17:15:59 +1100
commit635537dba33dfb78f4383d9271d52def17b31a95 (patch)
tree1959d00f74fbcb689469df2e0ae70840d4602823
parentddfc16d1275e7a2354913b3b3c2df6f0aa9f31ee (diff)
downloadskiboot-635537dba33dfb78f4383d9271d52def17b31a95.zip
skiboot-635537dba33dfb78f4383d9271d52def17b31a95.tar.gz
skiboot-635537dba33dfb78f4383d9271d52def17b31a95.tar.bz2
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 <cclaudio@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
-rw-r--r--libstb/status_codes.h1
-rw-r--r--libstb/tpm_chip.c10
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;