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
Unknown Object (File)
Wed, Sep 18, 3:00 PM
Unknown Object (File)
Fri, Sep 6, 6:08 AM
Unknown Object (File)
Thu, Sep 5, 4:57 AM
Unknown Object (File)
Sun, Sep 1, 5:53 PM
Unknown Object (File)
Sat, Aug 31, 4:00 PM
Unknown Object (File)
Fri, Aug 30, 11:05 PM
Unknown Object (File)
Aug 18 2024, 9:42 PM
Unknown Object (File)
Aug 17 2024, 10:23 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
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);