HomeFreeBSD

tcp: clear all TCP timers in tcp_timer_stop() when in callout

Description

tcp: clear all TCP timers in tcp_timer_stop() when in callout

When a TCP callout decides to disable self, e.g. tcp_timer_2msl() calling
tcp_close(), we must also clear all other possible timers. Otherwise,
upon return, the callout would be scheduled again in tcp_timer_enter().

Revert 57e27ff07aff, which was a temporary partial revert of otherwise
correct 62d47d73b7eb, that exposed the problem being fixed now. Add an
extra assertion in tcp_timer_enter() to check we aren't arming callout for
a closed connection.

Reviewed by: rscheff

Details

Provenance
glebiusAuthored on Mar 18 2024, 8:57 PM
Parents
rG576fbcbf2dc0: Add myself (rcm) to the calendar.
Branches
Unknown
Tags
Unknown
Reverts
D43855: tcp: partially undo D43792
rG57e27ff07aff: tcp: partially undo D43792