HomeFreeBSD

sockets: use only soref()/sorele() as socket reference count

Description

sockets: use only soref()/sorele() as socket reference count

o Retire SS_FDREF as it is basically a debug flag on top of already

existing soref()/sorele().

o Convert SS_PROTOREF into soref()/sorele().
o Change reference model for the listen queues, see below.
o Make sofree() private. The correct KPI to use is only sorele().
o Make soabort() respect the model and sorele() instead of sofree().

Note on listening queues. Until now the sockets on a queue had zero
reference count. And the reference were given only upon accept(2). The
assumption was that there is no way to see the queued socket from anywhere
except its head. This is not true, since queued sockets already have pcbs,
which are linked at least into the global pcb lists. With this change we
put the reference right in the sonewconn() and on accept(2) path we just
hand the existing reference to the file descriptor.

Differential revision: https://reviews.freebsd.org/D35679

Details

Provenance
glebiusAuthored on Jul 4 2022, 7:40 PM
Differential Revision
D35679: sockets: use only soref()/sorele() as socket reference count
Parents
rGbc7605647c71: sockets: use positive flag for file descriptor socket reference
Branches
Unknown
Tags
Unknown