HomeFreeBSD

In tcp_input(), we acquire a global write lock at first only if a

Description

In tcp_input(), we acquire a global write lock at first only if a
segment is likely to trigger a TCP state change (i.e., FIN/RST/SYN).
If we later have to upgrade the lock, we acquire an inpcb reference
and drop both global/inpcb locks before reacquiring in-order. In
that gap, the connection may transition into TIMEWAIT, so we need
to loop back and reevaluate the inpcb after relocking.

MFC after: 3 days
Reported by: Kamigishi Rei <spambox at haruhiism.net>
Reviewed by: bz

Details

Provenance
rwatsonAuthored on Oct 5 2009, 10:24 PM
Parents
rG604f19c91ec0: Fix build on amd64, where sysctl arg1 is a pointer.
Branches
Unknown
Tags
Unknown

Event Timeline