diff options
| author | Eric Dumazet <edumazet@google.com> | 2026-02-16 17:28:28 +0300 |
|---|---|---|
| committer | Sasha Levin <sashal@kernel.org> | 2026-03-04 15:20:39 +0300 |
| commit | 5aea79b91084d4ebdf0b0bb36c41b7b7ef0ae91e (patch) | |
| tree | 378f2215b32979c86ed8cfcc73d9b0f889900f6f /net | |
| parent | a1f686d273d129b45712d95f4095843b864466bd (diff) | |
| download | linux-5aea79b91084d4ebdf0b0bb36c41b7b7ef0ae91e.tar.xz | |
icmp: prevent possible overflow in icmp_global_allow()
[ Upstream commit 034bbd806298e9ba4197dd1587b0348ee30996ea ]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'net')
| -rw-r--r-- | net/ipv4/icmp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/icmp.c b/net/ipv4/icmp.c index ee24728fc60b..8ab51b51cc9b 100644 --- a/net/ipv4/icmp.c +++ b/net/ipv4/icmp.c @@ -247,7 +247,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; |
