The I2CD_CMD and I2CM_CMD registers now return a valid value.
Fixes: c2c5beec42bf ("hw/i2c/aspeed_i2c: Fix out-of-bounds read in I2C MMIO
handlers")
Signed-off-by: Timur Maksimov [email protected]
---
hw/i2c/aspeed_i2c.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/hw/i2c/aspeed_i2c.c b/hw/i2c/aspeed_i2c.c
index 0bc4bb6fbe..136d4eb859 100644
--- a/hw/i2c/aspeed_i2c.c
+++ b/hw/i2c/aspeed_i2c.c
@@ -108,6 +108,7 @@ static uint64_t aspeed_i2c_bus_old_read(AspeedI2CBus *bus,
hwaddr offset,
value = bus->regs[offset / sizeof(*bus->regs)];
break;
case A_I2CD_CMD:
+ value = bus->regs[offset / sizeof(*bus->regs)];
value = SHARED_FIELD_DP32(value, BUS_BUSY_STS, i2c_bus_busy(bus->bus));
break;
case A_I2CD_DMA_ADDR:
@@ -167,6 +168,7 @@ static uint64_t aspeed_i2c_bus_new_read(AspeedI2CBus *bus,
hwaddr offset,
value = extract64(bus->dma_dram_offset, 0, 32);
break;
case A_I2CM_CMD:
+ value = bus->regs[offset / sizeof(*bus->regs)];
value = SHARED_FIELD_DP32(value, BUS_BUSY_STS, i2c_bus_busy(bus->bus));
break;
case A_I2CM_DMA_TX_ADDR_HI:
--
2.53.0