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)
Mon, Nov 11, 6:05 PM
Unknown Object (File)
Mon, Nov 11, 5:49 PM
Unknown Object (File)
Mon, Nov 11, 4:54 PM
Unknown Object (File)
Sun, Nov 10, 4:01 PM
Unknown Object (File)
Sun, Oct 27, 11:57 AM
Unknown Object (File)
Oct 8 2024, 3:56 AM
Unknown Object (File)
Sep 27 2024, 9:45 AM
Unknown Object (File)
Sep 22 2024, 8:07 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