[PATCH RESEND] watchdog: sbsa_gwdt: clamp WOR value to hw max

Stefan Roese stefan.roese at mailbox.org
Fri May 8 13:49:28 CEST 2026


On 5/4/26 11:34, Juuso Rinta wrote:
> The WOR register is 32 bits, so any tick count exceeding U32_MAX is
> truncated by writel(). A large requested timeout can wrap to a small
> value causing the watchdog to fire sooner than requested.
> 
> Clamp the calculated value to U32_MAX prior to writing the register so
> over-large requests will be set to the maximum timeout value.
> 
> Found by code review.
> 
> Signed-off-by: Juuso Rinta <juuso.rinta at nokia.com>

Reviewed-by: Stefan Roese <stefan.roese at mailbox.org>

Thanks,
Stefan


> ---
>   drivers/watchdog/sbsa_gwdt.c | 10 ++++++++--
>   1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/watchdog/sbsa_gwdt.c b/drivers/watchdog/sbsa_gwdt.c
> index 807884c5bc7..3a924cb2b9a 100644
> --- a/drivers/watchdog/sbsa_gwdt.c
> +++ b/drivers/watchdog/sbsa_gwdt.c
> @@ -50,6 +50,7 @@ static int sbsa_gwdt_start(struct udevice *dev, u64 timeout, ulong flags)
>   {
>   	struct sbsa_gwdt_priv *priv = dev_get_priv(dev);
>   	u32 clk;
> +	u64 tout_wdog;
>   
>   	/*
>   	 * it work in the single stage mode in u-boot,
> @@ -58,8 +59,13 @@ static int sbsa_gwdt_start(struct udevice *dev, u64 timeout, ulong flags)
>   	 * to half value of timeout.
>   	 */
>   	clk = get_tbclk();
> -	writel(clk / (2 * 1000) * timeout,
> -	       priv->reg_control + SBSA_GWDT_WOR);
> +
> +	/* if requested timeout overflows, clamp it to u32_max */
> +	tout_wdog = ((u64)clk * timeout) / (2 * 1000);
> +	if (tout_wdog > U32_MAX)
> +		tout_wdog = U32_MAX;
> +
> +	writel(tout_wdog, priv->reg_control + SBSA_GWDT_WOR);
>   
>   	/* writing WCS will cause an explicit watchdog refresh */
>   	writel(SBSA_GWDT_WCS_EN, priv->reg_control + SBSA_GWDT_WCS);
> 
> ---
> base-commit: 4433253ecf2041f9362a763bb6cb79960921ac7e
> change-id: 20260428-fix-sbsa-timeout-overflow-20cf84fa8a6b
> 
> Best regards,
> --
> Juuso Rinta <juuso.rinta at nokia.com>



More information about the U-Boot mailing list