30 lines
911 B
Diff
30 lines
911 B
Diff
|
From: Prasad J Pandit <address@hidden>
|
||
|
|
||
|
The JAZZ RC4030 chipset emulator has a periodic timer and
|
||
|
associated interval reload register. The reload value is used
|
||
|
as divider when computing timer's next tick value. If reload
|
||
|
value is large, it could lead to divide by zero error. Limit
|
||
|
the interval reload value to avoid it.
|
||
|
|
||
|
Reported-by: Huawei PSIRT <address@hidden>
|
||
|
Signed-off-by: Prasad J Pandit <address@hidden>
|
||
|
---
|
||
|
hw/dma/rc4030.c | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/hw/dma/rc4030.c b/hw/dma/rc4030.c
|
||
|
index 2f2576f..c1b4997 100644
|
||
|
--- a/hw/dma/rc4030.c
|
||
|
+++ b/hw/dma/rc4030.c
|
||
|
@@ -460,7 +460,7 @@ static void rc4030_write(void *opaque, hwaddr addr, uint64_t data,
|
||
|
break;
|
||
|
/* Interval timer reload */
|
||
|
case 0x0228:
|
||
|
- s->itr = val;
|
||
|
+ s->itr = val & 0x01FF;
|
||
|
qemu_irq_lower(s->timer_irq);
|
||
|
set_next_tick(s);
|
||
|
break;
|
||
|
--
|
||
|
2.5.5
|