qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]