Page MenuHomeFreeBSD

[unix(4) cleanup 4/8] Simplify unp_disconnect() callers.
ClosedPublic

Authored by markj on Sep 2 2020, 4:56 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Sep 20, 7:34 AM
Unknown Object (File)
Sun, Sep 14, 12:21 AM
Unknown Object (File)
Sun, Aug 31, 12:06 AM
Unknown Object (File)
Aug 25 2025, 12:01 AM
Unknown Object (File)
Aug 18 2025, 8:07 AM
Unknown Object (File)
Aug 14 2025, 11:32 PM
Unknown Object (File)
Jul 27 2025, 10:27 AM
Unknown Object (File)
Jul 26 2025, 2:53 AM
Subscribers

Details

Summary

In all cases, PCBs are unlocked after unp_disconnect() returns. Since
unp_disconnect() may release the last PCB reference, callers may have to
bump the refcount before the call just so that they can release them
again.

Change unp_disconnect() to release PCB locks as well as connection
references. Remove code that bumps and then releases the refcount.
Tighten assertions.

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 33400
Build 30699: arc lint + arc unit

Event Timeline

markj requested review of this revision.Sep 2 2020, 4:56 PM
markj created this revision.

Use unp_pcb_unlock_pair().

sys/kern/uipc_usrreq.c
2003

There is a bug here, fixed later in the series: if unp_conn == NULL we might in fact be dropping the last reference here.

Don't use unp_pcb_rele_notlast() when we may in fact be releasing the last ref.

This revision was not accepted when it landed; it landed in state Needs Review.Sep 15 2020, 7:22 PM
This revision was automatically updated to reflect the committed changes.