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)
Mon, Dec 2, 6:03 PM
Unknown Object (File)
Fri, Nov 29, 3:08 PM
Unknown Object (File)
Tue, Nov 26, 9:05 AM
Unknown Object (File)
Mon, Nov 25, 3:32 PM
Unknown Object (File)
Sun, Nov 24, 6:16 AM
Unknown Object (File)
Sat, Nov 23, 8:45 PM
Unknown Object (File)
Sat, Nov 23, 1:54 PM
Unknown Object (File)
Sat, Nov 23, 6:18 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 36462
Build 33351: 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