From 5ae080dabe58606f9bd7bc36502a33feceeb7edd Mon Sep 17 00:00:00 2001 From: Mary Ruthven Date: Fri, 16 Apr 2021 04:48:28 +1000 Subject: i2cp: fix read chunk processing BUG=b:184965542 TEST=see BUG Change-Id: I340af997123ad0b5329a81311663ed90ffaab4b3 Signed-off-by: Mary Ruthven Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2836190 Reviewed-by: Andrey Pronin (cherry picked from commit d4cb504dc0e329d2f9714a47f295c7ed8b76b527) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2837406 (cherry picked from commit acdca9c81756cece9502505d64c856750d467e19) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2851344 --- chip/g/i2cs.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/chip/g/i2cs.c b/chip/g/i2cs.c index 2a24c28134..e57f87a60e 100644 --- a/chip/g/i2cs.c +++ b/chip/g/i2cs.c @@ -378,7 +378,9 @@ void i2cs_post_read_fill_fifo(uint8_t *buffer, size_t len) REGISTER_FILE_MASK; /* Insert bytes until fifo is word aligned */ - if (remainder_bytes) { + if (remainder_bytes && len) { + if (len < remainder_bytes) + remainder_bytes = len; /* mask the bytes to be kept */ word_out_value = value_addr[addr_offset]; word_out_value &= BIT((8 * start_offset)) - 1; -- cgit v1.2.1