summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2026-02-16 14:28:28 +0000
committerJakub Kicinski <kuba@kernel.org>2026-02-18 16:46:36 -0800
commit034bbd806298e9ba4197dd1587b0348ee30996ea (patch)
tree080ddb58f764a40931b5d6f3eb60bfbbf8f8959d
parent570e4549f63293ca4973ef367ff02554f3e3dfc2 (diff)
downloadlinux-next-034bbd806298e9ba4197dd1587b0348ee30996ea.tar.gz
linux-next-034bbd806298e9ba4197dd1587b0348ee30996ea.zip
icmp: prevent possible overflow in icmp_global_allow()
Following expression can overflow if sysctl_icmp_msgs_per_sec is big enough. sysctl_icmp_msgs_per_sec * delta / HZ; Fixes: 4cdf507d5452 ("icmp: add a global rate limitation") Signed-off-by: Eric Dumazet <edumazet@google.com> Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com> Link: https://patch.msgid.link/20260216142832.3834174-2-edumazet@google.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r--net/ipv4/icmp.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c
index e216b6df6331..eff8487c0aba 100644
--- a/net/ipv4/icmp.c
+++ b/net/ipv4/icmp.c
@@ -250,7 +250,8 @@ bool icmp_global_allow(struct net *net)
if (delta < HZ / 50)
return false;
- incr = READ_ONCE(net->ipv4.sysctl_icmp_msgs_per_sec) * delta / HZ;
+ incr = READ_ONCE(net->ipv4.sysctl_icmp_msgs_per_sec);
+ incr = div_u64((u64)incr * delta, HZ);
if (!incr)
return false;