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)
Tue, Jan 21, 11:22 PM
Unknown Object (File)
Fri, Jan 3, 5:58 PM
Unknown Object (File)
Dec 13 2024, 5:12 PM
Unknown Object (File)
Nov 21 2024, 6:06 AM
Unknown Object (File)
Oct 31 2024, 11:43 PM
Unknown Object (File)
Oct 2 2024, 8:36 PM
Unknown Object (File)
Sep 30 2024, 5:22 PM
Unknown Object (File)
Sep 27 2024, 10:51 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.