Ronald G. Minnich (rminnich@gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18080
-gerrit
commit 94a09342ea7e5f955693f0ff45cef80d51df0fc8 Author: Ronald G. Minnich rminnich@google.com Date: Mon Jan 9 16:37:07 2017 -0800
fixamdspi: checkout bytesout is > 0 before decrementing
The variable bytesout was being decremented without seeing if it was zero, resulting in it being kind of large, leading to an error.
This fixes the problem introduced in c2973d19.
Thanks Kyosti!
Change-Id: Ica4d2423cbccfd7cb55fe572b140de50b836dd14 Signed-off-by: Ronald G. Minnich rminnich@google.com --- src/southbridge/amd/agesa/hudson/spi.c | 3 ++- src/southbridge/amd/cimx/sb800/spi.c | 3 ++- src/southbridge/amd/sb700/spi.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/src/southbridge/amd/agesa/hudson/spi.c b/src/southbridge/amd/agesa/hudson/spi.c index 00f6b29..42176c3 100644 --- a/src/southbridge/amd/agesa/hudson/spi.c +++ b/src/southbridge/amd/agesa/hudson/spi.c @@ -98,7 +98,8 @@ static int spi_ctrlr_xfer(const struct spi_slave *slave, const void *dout, u8 readoffby1; size_t count;
- bytesout--; + if (bytesout) + bytesout--;
/* * Check if this is a write command attempting to transfer more bytes diff --git a/src/southbridge/amd/cimx/sb800/spi.c b/src/southbridge/amd/cimx/sb800/spi.c index 1e84743..7acb5ae 100644 --- a/src/southbridge/amd/cimx/sb800/spi.c +++ b/src/southbridge/amd/cimx/sb800/spi.c @@ -68,7 +68,8 @@ static int spi_ctrlr_xfer(const struct spi_slave *slave, const void *dout, u8 readwrite; size_t count;
- bytesout--; + if (bytesout) + bytesout--;
/* * Check if this is a write command attempting to transfer more bytes diff --git a/src/southbridge/amd/sb700/spi.c b/src/southbridge/amd/sb700/spi.c index 5d56415..3ff5a5c 100644 --- a/src/southbridge/amd/sb700/spi.c +++ b/src/southbridge/amd/sb700/spi.c @@ -76,7 +76,8 @@ static int spi_ctrlr_xfer(const struct spi_slave *slave, const void *dout,
uint32_t spibar = get_spi_bar();
- bytesout--; + if (bytesout) + bytesout--;
/* * Check if this is a write command attempting to transfer more bytes