[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] timer: stm32f2xx_timer: add check for prescaler
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH] timer: stm32f2xx_timer: add check for prescaler value |
Date: |
Mon, 24 Oct 2016 15:11:41 +0100 |
On 18 October 2016 at 15:17, P J P <address@hidden> wrote:
> From: Prasad J Pandit <address@hidden>
>
> The STM32F2XX Timer emulator uses a 16 bit prescaler value to
> limit the timer clock rate. It does that by dividing the timer
> frequency. If the prescaler 's->tim_psc' was set to be UINT_MAX,
> it'd lead to divide by zero error. Limit prescaler value to 16
> bits to avoid it.
>
> Reported-by: Huawei PSIRT <address@hidden>
> Signed-off-by: Prasad J Pandit <address@hidden>
> ---
> hw/timer/stm32f2xx_timer.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/timer/stm32f2xx_timer.c b/hw/timer/stm32f2xx_timer.c
> index bf0fb28..2cad36d 100644
> --- a/hw/timer/stm32f2xx_timer.c
> +++ b/hw/timer/stm32f2xx_timer.c
> @@ -208,7 +208,7 @@ static void stm32f2xx_timer_write(void *opaque, hwaddr
> offset,
> return;
> case TIM_PSC:
> timer_val = stm32f2xx_ns_to_ticks(s, now) - s->tick_offset;
> - s->tim_psc = value;
> + s->tim_psc = value & 0xFFFF;
> value = timer_val;
> break;
> case TIM_CNT:
Applied to target-arm.next, thanks.
(That "value = timer_val;" line looks odd as it is dead code,
but that's a different bug I think. Alistair, can you remember
what you meant when you wrote that?)
-- PMM