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)
Thu, Nov 21, 6:06 AM
Unknown Object (File)
Thu, Oct 31, 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
Unknown Object (File)
Sep 21 2024, 4:35 PM
Unknown Object (File)
Sep 20 2024, 6:21 PM
Unknown Object (File)
Sep 8 2024, 7:29 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

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

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 ↗(On Diff #76550)

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.