Skip to content
  • Richard Scheffenegger's avatar
    Address panic with PRR due to missed initialization of recover_fs · bc7ee8e5
    Richard Scheffenegger authored
    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
    bc7ee8e5