Thread (9 messages) 9 messages, 3 authors, 2023-10-30

Re: [PATCH] sbsa_gwdt: Calculate timeout with 64-bit math

From: Guenter Roeck <linux@roeck-us.net>
Date: 2023-10-22 16:58:39
Also in: linux-watchdog, lkml, stable

On 10/14/23 02:12, Darren Hart wrote:
On Tue, Sep 26, 2023 at 05:45:13AM -0700, Guenter Roeck wrote:
quoted
On Thu, Sep 21, 2023 at 02:02:36AM -0700, Darren Hart wrote:
quoted
Commit abd3ac7902fb ("watchdog: sbsa: Support architecture version 1")
introduced new timer math for watchdog revision 1 with the 48 bit offset
register.

The gwdt->clk and timeout are u32, but the argument being calculated is
u64. Without a cast, the compiler performs u32 operations, truncating
intermediate steps, resulting in incorrect values.

A watchdog revision 1 implementation with a gwdt->clk of 1GHz and a
timeout of 600s writes 3647256576 to the one shot watchdog instead of
300000000000, resulting in the watchdog firing in 3.6s instead of 600s.

Force u64 math by casting the first argument (gwdt->clk) as a u64. Make
the order of operations explicit with parenthesis.

Fixes: abd3ac7902fb ("watchdog: sbsa: Support architecture version 1")
Reported-by: Vanshidhar Konda <redacted>
Signed-off-by: Darren Hart <redacted>
Cc: Wim Van Sebroeck <wim@linux-watchdog.org>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: linux-watchdog@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: <redacted> # 5.14.x
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Guenter or Wim, I haven't seen this land in the RCs or in next yet. Have
you already picked it up? Anything more needed from me?

Thanks,
Sorry, I am suffering from what I can only describe as a severe case of
maintainer/reviewer PTSD, and I have yet to find a way of dealing with that.

Guenter


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help