aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/sctp_cc_functions.c
diff options
context:
space:
mode:
authorMichael Tuexen <tuexen@FreeBSD.org>2020-08-23 22:26:38 +0000
committerMichael Tuexen <tuexen@FreeBSD.org>2020-08-23 22:26:38 +0000
commitc7bdbd19f6be9c42e5633b2b9c20344894a16260 (patch)
tree141b1ab2c92f5f7c6866bc31c2cdb1e8ad5a5665 /sys/netinet/sctp_cc_functions.c
parent0dba29b27102b59fe161205a6b7a5f44b12cbcee (diff)
downloadsrc-c7bdbd19f6be9c42e5633b2b9c20344894a16260.tar.gz
src-c7bdbd19f6be9c42e5633b2b9c20344894a16260.zip
MFC r359405:
Handle integer overflows correctly when converting msecs and secs to ticks and vice versa. These issues were caught by recently added panic() calls on INVARIANTS systems.
Notes
Notes: svn path=/stable/12/; revision=364574
Diffstat (limited to 'sys/netinet/sctp_cc_functions.c')
-rw-r--r--sys/netinet/sctp_cc_functions.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/sctp_cc_functions.c b/sys/netinet/sctp_cc_functions.c
index 63bc57d24ea0..db3da3ae8169 100644
--- a/sys/netinet/sctp_cc_functions.c
+++ b/sys/netinet/sctp_cc_functions.c
@@ -1914,7 +1914,7 @@ measure_rtt(struct sctp_nets *net)
if (net->fast_retran_ip == 0 && net->ssthresh < 0xFFFF && htcp_ccount(&net->cc_mod.htcp_ca) > 3) {
if (net->cc_mod.htcp_ca.maxRTT < net->cc_mod.htcp_ca.minRTT)
net->cc_mod.htcp_ca.maxRTT = net->cc_mod.htcp_ca.minRTT;
- if (net->cc_mod.htcp_ca.maxRTT < srtt && srtt <= net->cc_mod.htcp_ca.maxRTT + MSEC_TO_TICKS(20))
+ if (net->cc_mod.htcp_ca.maxRTT < srtt && srtt <= net->cc_mod.htcp_ca.maxRTT + sctp_msecs_to_ticks(20))
net->cc_mod.htcp_ca.maxRTT = srtt;
}
}
@@ -1975,7 +1975,7 @@ htcp_beta_update(struct htcp *ca, uint32_t minRTT, uint32_t maxRTT)
}
}
- if (ca->modeswitch && minRTT > (uint32_t)MSEC_TO_TICKS(10) && maxRTT) {
+ if (ca->modeswitch && minRTT > sctp_msecs_to_ticks(10) && maxRTT) {
ca->beta = (minRTT << 7) / maxRTT;
if (ca->beta < BETA_MIN)
ca->beta = BETA_MIN;