diff options
author | Duncan Laurie <dlaurie@chromium.org> | 2016-09-02 14:45:53 -0700 |
---|---|---|
committer | Duncan Laurie <dlaurie@chromium.org> | 2016-09-06 22:59:07 +0200 |
commit | 112ab9183754a81c8100fcc37593ef4905a9d3a3 (patch) | |
tree | 1e39a0e57d63755d842ba07f811d8b8c835d06f1 /src | |
parent | c2875872c8852ccb261bdb20d145795ade832118 (diff) |
drivers/i2c/tpm: Fix error handling for tis structure not initialized
If the TPM completely fails to respond then the vendor structure may not
have assigned handlers yet, so catch that case and return error so the
boot can continue to recovery mode instead of asserting over and over.
Change-Id: If3a11567df89bc73b4d4878bf89d877974044f34
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://review.coreboot.org/16416
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/drivers/i2c/tpm/tis.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/drivers/i2c/tpm/tis.c b/src/drivers/i2c/tpm/tis.c index c6173b47ed..ce0de8953b 100644 --- a/src/drivers/i2c/tpm/tis.c +++ b/src/drivers/i2c/tpm/tis.c @@ -114,6 +114,9 @@ static ssize_t tpm_transmit(const uint8_t *buf, size_t bufsiz) memcpy(&ordinal, buf + TPM_CMD_ORDINAL_BYTE, sizeof(ordinal)); ordinal = be32_to_cpu(ordinal); + if (!chip->vendor.send || !chip->vendor.status || !chip->vendor.cancel) + return -1; + if (count == 0) { printk(BIOS_DEBUG, "tpm_transmit: no data\n"); return -1; |