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
F107161202: D32967.diff
Sat, Jan 11, 1:47 AM
Unknown Object (File)
Tue, Jan 7, 6:57 PM
Unknown Object (File)
Dec 9 2024, 6:45 AM
Unknown Object (File)
Nov 28 2024, 10:30 PM
Unknown Object (File)
Nov 28 2024, 10:30 PM
Unknown Object (File)
Nov 28 2024, 10:30 PM
Unknown Object (File)
Nov 28 2024, 10:10 PM
Unknown Object (File)
Oct 3 2024, 9:13 AM
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
rS FreeBSD src repository - subversion
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 42759
Build 39647: arc lint + arc unit

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);