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)
Fri, Jun 21, 2:09 AM
Unknown Object (File)
Thu, Jun 20, 11:38 PM
Unknown Object (File)
Thu, Jun 20, 11:24 PM
Unknown Object (File)
Thu, Jun 20, 10:30 PM
Unknown Object (File)
May 27 2024, 8:59 AM
Unknown Object (File)
May 25 2024, 4:21 AM
Unknown Object (File)
May 22 2024, 10:18 PM
Unknown Object (File)
May 22 2024, 9:44 PM
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 33336
Build 30647: 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.