HomeFreeBSD

Address panic with PRR due to missed initialization of recover_fs

Description

Address panic with PRR due to missed initialization of recover_fs

Summary:
When using the base stack in conjunction with RACK, it appears that
infrequently, ++tp->t_dupacks is instantly larger than tcprexmtthresh.

This leaves the recover flightsize (sackhint.recover_fs) uninitialized,
leading to a div/0 panic.

Address this by properly initializing the variable just prior to first
use, if it is not properly initialized.

In order to prevent stale information from a prior recovery to
negatively impact the PRR calculations in this event, also clear
recover_fs once loss recovery is finished.

Finally, improve the readability of the initialization of recover_fs
when t_dupacks == tcprexmtthresh by adjusting the indentation and
using the max(1, snd_nxt - snd_una) macro.

Reviewers: rrs, kbowling, tuexen, jtl, transport, gnn!, jmg, manu, manpages

Reviewed By: rrs, kbowling, transport

Subscribers: bdrewery, andrew, rpokala, ae, emaste, bz, bcran, linuxkpi, imp, melifaro

Differential Revision: https://reviews.freebsd.org/D28114

Details

Provenance
rscheffAuthored on Jan 20 2021, 11:06 AM
Reviewer
transport
Differential Revision
D28114: Address panic with PRR due to missed initialization of recover_fs
Parents
rGcef194271162: libc: Fix null pointer arithmetic warning in mergesort
Branches
Unknown
Tags
Unknown