RTEMS | stm32h7/bspstart: avoid overflow in HAL_GetTick calculation (!1144)

Mohamed Ayman (@mohamedayman23) gitlab at rtems.org
Wed Mar 18 23:53:41 UTC 2026




Mohamed Ayman commented on a discussion on bsps/arm/stm32h7/start/bspstart.c: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1144#note_146136

 >  /* Get number of milliseconds elapsed since startup */
 >  uint32_t HAL_GetTick(void)
 >  {
 > -  return rtems_clock_get_ticks_since_boot() *
 > -    rtems_configuration_get_milliseconds_per_tick();
 > +  return (uint32_t)(
 > +    (uint64_t) rtems_clock_get_ticks_since_boot() *
 > +    rtems_configuration_get_milliseconds_per_tick()
 > +);

I added a command to identify all places where HAL_GetTick() is used in a rollover-safe manner using the standard subtraction idiom. This ensures any 32-bit wraparound of the tick counter is handled correctly.

the command: **`grep -rn "HAL_GetTick().*-\|--.*HAL_GetTick" --include="*.c" .`**

examples:

* stm32h7xx_hal_sd.c:442: if ((HAL_GetTick() - tickstart) \>= SDMMC_DATATIMEOUT)


* stm32h7xx_hal_rcc.c:450: if ((uint32_t)(HAL_GetTick() - tickstart) \> HSE_TIMEOUT_VALUE)

![Screenshot from 2026-03-19 01-51-41.png](/uploads/8e4830c5047b8a4c06efcfaceda37131/Screenshot_from_2026-03-19_01-51-41.png){width=900 height=558}

and sorry for late responding

-- 
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1144#note_146136
You're receiving this email because of your account on gitlab.rtems.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/bugs/attachments/20260318/ff1d6de6/attachment-0001.htm>


More information about the bugs mailing list