Thread (3 messages) flat view 3 messages, 3 authors, 2d ago
WARM2d

[PATCH] bonding: alb: Fix overflow in TLB gap calculation

From: lirongqing <hidden>
Date: 2026-09-13 12:59:22
Also in: lkml, stable
Subsystem: bonding driver, networking drivers, the rest · Maintainers: Jay Vosburgh, Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds

From: Li RongQing <redacted>

compute_gap() shifts 32-bit values before converting them to s64,
which can overflow for high speed network devices. The overflowed
value is then incorrectly used in the TLB load balancing calculation.

Convert the operands to s64 before shifting so the arithmetic is done
in 64-bit width.

Fixes: 097811bb48c7 ("bonding: optimize tlb_get_least_loaded_slave")
Cc: stable@vger.kernel.org
Signed-off-by: Li RongQing <redacted>
---
 drivers/net/bonding/bond_alb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c
index 43ac8e2..b520040 100644
--- a/drivers/net/bonding/bond_alb.c
+++ b/drivers/net/bonding/bond_alb.c
@@ -160,8 +160,8 @@ static void tlb_deinitialize(struct bonding *bond)
 
 static long long compute_gap(struct slave *slave)
 {
-	return (s64) (slave->speed << 20) - /* Convert to Megabit per sec */
-	       (s64) (SLAVE_TLB_INFO(slave).load << 3); /* Bytes to bits */
+	return ((s64)slave->speed << 20) - /* Convert to Megabit per sec */
+	       ((s64)SLAVE_TLB_INFO(slave).load << 3); /* Bytes to bits */
 }
 
 static struct slave *tlb_get_least_loaded_slave(struct bonding *bond)
-- 
2.9.4
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help