Assigning "priv->data[-1] = priv->len;" obviously doesn't make sense. What it does is it ends up corrupting the last byte of priv->len so priv->len becomes a very high number. Reported-by: syzbot+ed71512d469895b5b34e@xxxxxxxxxxxxxxxxxxxxxxxxx Fixes: d3ff6ce40031 ("i2c-i801: Enable IRQ for byte_by_byte transactions") Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> --- Untested. drivers/i2c/busses/i2c-i801.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c index f5e69fe56532..420d8025901e 100644 --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c @@ -584,7 +584,6 @@ static void i801_isr_byte_done(struct i801_priv *priv) "SMBus block read size is %d\n", priv->len); } - priv->data[-1] = priv->len; } /* Read next byte */ -- 2.11.0