Hi Nabih, > Subject: [PATCH] hw/i2c/aspeed_i2c.c: Add a check for dma_read > > If aspeed_i2c_dma_read fails in aspeed_i2c_bus_send currently, we get stuck > in an infinite retry loop. Add a check for the return value of > aspeed_i2c_dma_read that will break us out of said loop. > > Signed-off-by: Nabih Estefan <[email protected]> > --- > hw/i2c/aspeed_i2c.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c index > 1b8ac561c3..3de72db652 100644 > --- a/hw/i2c/aspeed_i2c.c > +++ b/hw/i2c/aspeed_i2c.c > @@ -272,7 +272,11 @@ static int aspeed_i2c_bus_send(AspeedI2CBus *bus) > } > while (bus->regs[reg_dma_len]) { > uint8_t data; > - aspeed_i2c_dma_read(bus, &data); > + ret = aspeed_i2c_dma_read(bus, &data); > + /* Check that we were able to read the DMA */ > + if (ret) { > + break; > + } > trace_aspeed_i2c_bus_send("DMA", bus->regs[reg_dma_len], > bus->regs[reg_dma_len], > data); > ret = i2c_send(bus->bus, data); > -- > 2.52.0.457.g6b5491de43-goog
Reviewed-by Jamin Lin <[email protected]> Thanks, Jamin
