CVSROOT: /cvs Module name: src Changes by: m...@cvs.openbsd.org 2024/03/22 11:34:11
Modified files: sys/kern : uipc_socket.c uipc_usrreq.c sys/sys : socketvar.h Log message: Use sorflush() instead of direct unp_scan(..., unp_discard) to discard dead unix(4) sockets. The difference in direct unp_scan() and sorflush() is the mbuf(9) chain. For the first case it is still linked to the `so_rcv', for the second it is not. This is required to make `sb_mtx' mutex(9) the only `so_rcv' sockbuf protection and remove socket re-locking from the most of uipc_*send() paths. The unlinked mbuf(9) chain doesn't require any protection, so this allows to perform sleeping unp_discard() lockless. Also, the mbuf(9) chain of the discarded socket still contains addresses of file descriptors and it is much safer to unlink it before FRELE() them. This is the reason to commit this diff standalone. ok bluhm