RTEMS | stm32h7/bspstart: avoid overflow in HAL_GetTick calculation (!1144)
Mohamed Ayman (@mohamedayman23)
gitlab at rtems.org
Tue Mar 17 13:34:28 UTC 2026
Mohamed Ayman created a merge request: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1144
Project:Branches: mohamedayman23/rtems:fix-issue-stm32h7-bspstart to rtems/rtos/rtems:main
Author: Mohamed Ayman
stm32h7/bspstart: avoid overflow in HAL_GetTick calculation
Potential Integer Overflow in HAL_GetTick():
Original code multiplies ticks since boot by milliseconds per tick using 32-bit arithmetic:
uint32_t HAL_GetTick(void) { return rtems_clock_get_ticks_since_boot() \* rtems_configuration_get_milliseconds_per_tick(); }
Context: STM32 HAL expects HAL_GetTick() to return a millisecond counter for timeouts and delays. A 32-bit millisecond counter overflows every \~49.7 days at 1ms tick.
Potential Bug: If the system tick is larger than 1ms (e.g., 10ms/tick), the multiplication can overflow faster, roughly every 4.97 days, causing HAL drivers (UART, I2C, SPI) to see incorrect time values.
And the fix is to Cast to 64-bit before multiplication to avoid intermediate overflow, then return as uint32_t. Ensures correct millisecond count regardless of tick size.
AI usage: yes
Prompt used: what is i used more than one millisecond and less than i know that the reference manual say the initial is one milli
AI model: GPT-5 mini
How AI was used: just predicting unusual behavior
--
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/merge_requests/1144
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/20260317/997762c4/attachment.htm>
More information about the bugs
mailing list