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)
Wed, Mar 26, 9:02 AM
Unknown Object (File)
Sun, Mar 9, 6:18 PM
Unknown Object (File)
Feb 28 2025, 4:20 AM
Unknown Object (File)
Feb 18 2025, 5:06 PM
Unknown Object (File)
Feb 5 2025, 5:18 AM
Unknown Object (File)
Jan 21 2025, 11:22 PM
Unknown Object (File)
Jan 3 2025, 5:58 PM
Unknown Object (File)
Dec 13 2024, 5:12 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.