mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 06:32:08 +00:00
tcp: avoid possible arithmetic overflows
icsk_rto is a 32bit field, and icsk_backoff can reach 15 by default, or more if some sysctl (eg tcp_retries2) are changed. Better use 64bit to perform icsk_rto << icsk_backoff operations As Joe Perches suggested, add a helper for this. Yuchung spotted the tcp_v4_err() case. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
35f7aa5309
commit
fcdd1cf4dd
5 changed files with 23 additions and 14 deletions
|
@ -3208,9 +3208,10 @@ static void tcp_ack_probe(struct sock *sk)
|
|||
* This function is not for random using!
|
||||
*/
|
||||
} else {
|
||||
unsigned long when = inet_csk_rto_backoff(icsk, TCP_RTO_MAX);
|
||||
|
||||
inet_csk_reset_xmit_timer(sk, ICSK_TIME_PROBE0,
|
||||
min(icsk->icsk_rto << icsk->icsk_backoff, TCP_RTO_MAX),
|
||||
TCP_RTO_MAX);
|
||||
when, TCP_RTO_MAX);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue