Page MenuHomeFreeBSD

tcp: The rack stack can incorrectly have an overflow when calculating a burst delay.
ClosedPublic

Authored by rrs on Oct 26 2021, 11:47 AM.
Tags
None
Referenced Files
Unknown Object (File)
Mar 9 2024, 7:53 PM
Unknown Object (File)
Feb 21 2024, 7:59 PM
Unknown Object (File)
Feb 15 2024, 7:06 AM
Unknown Object (File)
Feb 14 2024, 2:16 AM
Unknown Object (File)
Feb 9 2024, 6:22 PM
Unknown Object (File)
Dec 31 2023, 8:11 AM
Unknown Object (File)
Dec 20 2023, 7:55 AM
Unknown Object (File)
Dec 12 2023, 8:38 AM
Subscribers

Details

Summary

If the congestion window is very large the fact that we multiply it by 1000 (for microseconds) can
cause the uint32_t to overflow and we incorrectly calculate a very small divisor. This will then
cause the burst timer to be very large when it should be 0. Instead lets make the three variables
uint64_t and avoid the issue.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

rrs requested review of this revision.Oct 26 2021, 11:47 AM

While where at it, there is a duplicate srtt that should be just one var at the higher scope. Lets fix
that and make the needed casts when comparing to slot. That way we never can get a
confused compiler :)

This revision is now accepted and ready to land.Oct 26 2021, 3:37 PM