Page MenuHomeFreeBSD

TCP PRR: Patch div/0 in tcp_prr_partialack
ClosedPublic

Authored by rscheff on Jan 24 2021, 9:26 PM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Nov 13, 4:03 PM
Unknown Object (File)
Thu, Nov 7, 8:47 PM
Unknown Object (File)
Thu, Nov 7, 5:19 AM
Unknown Object (File)
Thu, Oct 17, 4:47 AM
Unknown Object (File)
Wed, Oct 16, 5:52 AM
Unknown Object (File)
Wed, Oct 16, 2:14 AM
Unknown Object (File)
Oct 15 2024, 11:24 AM
Unknown Object (File)
Oct 15 2024, 11:24 AM
Subscribers

Details

Summary

With clearing of recover_fs in bc7ee8e5bc555, div/0
was observed while processing partial_acks.

Suspect that rewind of an erraneous RTO may be
causing this - with the above change, recover_fs
would no longer retained at the last calculated
value, and reset. But CC_RTO_ERR can reenable
IN_RECOVERY(), without setting this again.

Adding a safety net prior to the division in that
function, which I missed in D28114.

Adding line wraps in that PRR block.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 36455
Build 33344: arc lint + arc unit

Event Timeline

  • retain recover_fs past recovery, in case of RTO rollback

LGTM, both places where the division happens are now protected.
We are testing it now with public traffic (~ 8 hours), looks good so far.

I would suggest to separate the whitspace changes and the functional changes into two commits.

This revision is now accepted and ready to land.Jan 25 2021, 10:40 AM

Adjust line length in tcp_prr_partialack, no functional change.

This revision now requires review to proceed.Jan 25 2021, 11:15 AM
  • separate out whitespace changes

LGTM, now both places with the division are protected.
As mentioned earlier, our live test runs fine for now (>12 hours).

This revision is now accepted and ready to land.Jan 25 2021, 1:25 PM