summaryrefslogtreecommitdiffstats
path: root/src/drivers/i2c/tpm/tpm.h
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2014-12-19 14:38:51 -0800
committerStefan Reinauer <stefan.reinauer@coreboot.org>2015-04-10 20:06:23 +0200
commite6cf3c6f78149b4c11c7a53f27e684bd560c0ac2 (patch)
treea3c1bd98a8aa42a6c5c2bc9354e67350371774db /src/drivers/i2c/tpm/tpm.h
parentd946f5e61d0c8966bec57f7d3961e41555b5299a (diff)
downloadcoreboot-e6cf3c6f78149b4c11c7a53f27e684bd560c0ac2.tar.gz
coreboot-e6cf3c6f78149b4c11c7a53f27e684bd560c0ac2.tar.bz2
coreboot-e6cf3c6f78149b4c11c7a53f27e684bd560c0ac2.zip
TPM: Reduce buffer size to fix stack overflow
The TPM driver by default allocates a 4K transfer buffer on the stack, which leads to lots of fun on boards with 2K or 3K stack sizes. On RK3288 this ends up writing over random memory sections which dependent on the memlayout of the day might contain timestamp data (no big deal) or page tables (-> bad time). This patch fixes the problem by reducing the buffer size to slightly above 1K, which still seems to work as far as I can tell. There was already some really odd code that #undef'ed this value and redefined it with the lower number in one .c file (unfortunately not the one with the buffer declaration), with no explanation whatsoever... I'm removing that and just assume the smaller value will be fine for everything. BRANCH=veyron BUG=None TEST=Booted Pinky and Falco. Change-Id: I440a5662b41cbd8b7becab3113262e1140b7f763 Signed-off-by: Stefan Reinauer <reinauer@chromium.org> Original-Commit-Id: 3d3288041b6629b7623b9d58816e782e72836b81 Original-Change-Id: Idf80f44cbfb9617c56b64a5c88ebedf7fcb4ec71 Original-Signed-off-by: Julius Werner <jwerner@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/236976 Original-Reviewed-by: David Hendricks <dhendrix@chromium.org> Reviewed-on: http://review.coreboot.org/9481 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Diffstat (limited to 'src/drivers/i2c/tpm/tpm.h')
-rw-r--r--src/drivers/i2c/tpm/tpm.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/drivers/i2c/tpm/tpm.h b/src/drivers/i2c/tpm/tpm.h
index 6d195a198527..de88a661a35f 100644
--- a/src/drivers/i2c/tpm/tpm.h
+++ b/src/drivers/i2c/tpm/tpm.h
@@ -42,8 +42,8 @@ enum tpm_timeout {
TPM_TIMEOUT = 1, /* msecs */
};
-/* Size of external transmit buffer (used in tpm_transmit)*/
-#define TPM_BUFSIZE 4096
+/* Size of external transmit buffer (used for stack buffer in tpm_sendrecv) */
+#define TPM_BUFSIZE 1260
/* Index of fields in TPM command buffer */
#define TPM_CMD_SIZE_BYTE 2