From: Nabih Estefan Date: Tue, 20 Jan 2026 21:11:16 +0000 (+0000) Subject: hw/i2c/aspeed_i2c.c: Add a check for dma_read X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a1d4770670297a1da52118f84812e4a5ffc7722;p=thirdparty%2Fqemu.git 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 Reviewed-by: Cédric Le Goater Fixes: 545d6bef7097 ("aspeed/i2c: Add support for DMA transfers") Link: https://lore.kernel.org/qemu-devel/20260120211116.1367476-1-nabihestefan@google.com Signed-off-by: Cédric Le Goater --- diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c index 7cf92423c7..1ee73a8f5e 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);