Page MenuHomeFreeBSD

tcp_timers: check for (INP_TIMEWAIT | INP_DROPPED) only once
ClosedPublic

Authored by glebius on Nov 12 2021, 5:11 PM.
Tags
None
Referenced Files
F131930989: D32967.diff
Sun, Oct 12, 7:25 AM
Unknown Object (File)
Wed, Oct 8, 12:32 PM
Unknown Object (File)
Sep 11 2025, 12:05 AM
Unknown Object (File)
Sep 6 2025, 6:01 PM
Unknown Object (File)
Sep 5 2025, 3:32 AM
Unknown Object (File)
Aug 15 2025, 12:25 AM
Unknown Object (File)
Jul 28 2025, 1:49 PM
Unknown Object (File)
Jul 27 2025, 6:35 PM
Subscribers

Details

Summary

All timers keep inpcb locked through their execution. We need to
check these flags only once. Checking for INP_TIMEWAIT earlier is
is also safer, since such inpcbs point into tcptw rather than tcpcb,
and any dereferences of inp_ppcb as tcpcb are erroneous.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

This revision is now accepted and ready to land.Nov 13 2021, 12:39 PM

This check is occurring lots of places and could have been factored out:

if (inp->inp_flags & (INP_TIMEWAIT | INP_DROPPED)) {
        INP_WUNLOCK(inp);