tpm2: fix tpm_write() error reporting

The code misses the cases when a response was received but the command
failed. This patch fixes the problem.

BRANCH=none
BUG=chrome-os-partner:50645
TEST=none

Change-Id: I3d50a4b67e3592bb80d2524a7c7f264fddbd34ae
Signed-off-by: Martin Roth <martinroth@chromium.org>
Original-Commit-Id: 8f4d6185e13beead7156027e1cb40f7944e46569
Original-Change-Id: I914ab6509d3ab2082152652205802201a6637fcc
Original-Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/358096
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/15637
Tested-by: build bot (Jenkins)
Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@googlemail.com>
diff --git a/src/lib/tpm2_tlcl.c b/src/lib/tpm2_tlcl.c
index ec20ca9..312fe36 100644
--- a/src/lib/tpm2_tlcl.c
+++ b/src/lib/tpm2_tlcl.c
@@ -246,12 +246,12 @@
 
 	response = tpm_process_command(TPM2_NV_Write, &nv_writec);
 
-	/* Need to map tpm error codes into internal values. */
-	if (!response)
-		return TPM_E_WRITE_FAILURE;
+	printk(BIOS_INFO, "%s: response is %x\n",
+	       __func__, response ? response->hdr.tpm_code : -1);
 
-	printk(BIOS_INFO, "%s:%d return code %x\n", __func__, __LINE__,
-	       response->hdr.tpm_code);
+	/* Need to map tpm error codes into internal values. */
+	if (!response || response->hdr.tpm_code)
+		return TPM_E_WRITE_FAILURE;
 
 	return TPM_SUCCESS;
 }