mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 1/2] include: linux/math.h: promote DIV_ROUND_UP_ULL args to 64-bit
@ 2024-08-15  6:56 Ahmad Fatoum
  2024-08-15  6:56 ` [PATCH 2/2] i2c: efi: use DIV_ROUND_UP_ULL instead of native division Ahmad Fatoum
  2024-08-20 12:07 ` [PATCH 1/2] include: linux/math.h: promote DIV_ROUND_UP_ULL args to 64-bit Sascha Hauer
  0 siblings, 2 replies; 4+ messages in thread
From: Ahmad Fatoum @ 2024-08-15  6:56 UTC (permalink / raw)
  To: barebox; +Cc: Ahmad Fatoum

DIV_ROUND_DOWN_ULL promotes division arguments to 64-bit, but
DIV_ROUND_UP_ULL did so only for the division, not the addition for the
round up. This would lead to a wrong result when the 32-bit addition
wraps around.

Linux has an explicit cast to fix this, so do likewise in barebox.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
 include/linux/math.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/linux/math.h b/include/linux/math.h
index acbffa96e6eb..f5d5cc714c4e 100644
--- a/include/linux/math.h
+++ b/include/linux/math.h
@@ -23,7 +23,8 @@
 #define DIV_ROUND_DOWN_ULL(ll, d) \
 	({ unsigned long long _tmp = (ll); do_div(_tmp, d); _tmp; })
 
-#define DIV_ROUND_UP_ULL(ll, d)		DIV_ROUND_DOWN_ULL((ll) + (d) - 1, (d))
+#define DIV_ROUND_UP_ULL(ll, d) \
+	DIV_ROUND_DOWN_ULL((unsigned long long)(ll) + (d) - 1, (d))
 
 #define DIV_ROUND_CLOSEST(x, divisor)(			\
 {							\
-- 
2.39.2




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-08-20 12:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-08-15  6:56 [PATCH 1/2] include: linux/math.h: promote DIV_ROUND_UP_ULL args to 64-bit Ahmad Fatoum
2024-08-15  6:56 ` [PATCH 2/2] i2c: efi: use DIV_ROUND_UP_ULL instead of native division Ahmad Fatoum
2024-08-20  5:28   ` Tomas Marek
2024-08-20 12:07 ` [PATCH 1/2] include: linux/math.h: promote DIV_ROUND_UP_ULL args to 64-bit Sascha Hauer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox