Move solock() down to sosetopt(). A part of standalone sblock() work.
authormvs <mvs@openbsd.org>
Thu, 3 Aug 2023 09:49:08 +0000 (09:49 +0000)
committermvs <mvs@openbsd.org>
Thu, 3 Aug 2023 09:49:08 +0000 (09:49 +0000)
commitee0786397647feeed33b08a32051be86b74b8d2c
tree7b083d71f0b4d352ab04ab65dc1f676f10f81b2f
parent95ed13e137a13247700308f5c7a3f95ee5a7a8c2
Move solock() down to sosetopt(). A part of standalone sblock() work.
This movement required because buffers related SO_SND* and SO_RCV*
socket options should be protected with sblock(). However, standalone
sblock() has different lock order with solock() and `so_snd' and
`so_rcv' buffers. At least sblock() for `so_snd' buffer will always be
taken before solock() in the sosend() path.

The (*pr_ctloutput)() call was removed from the SOL_SOCKET level 'else'
branch. Except the SO_RTABLE case where it handled in the special way,
this is null op call.

For SO_SND* and SO_RCV* cases solock() will be replaced by sblock() in
the future.

Feedback from bluhm

Tested by bluhm naddy

ok bluhm
sys/kern/uipc_socket.c
sys/kern/uipc_syscalls.c
sys/net/bfd.c
sys/net/if_vxlan.c
sys/net/if_wg.c
sys/nfs/krpc_subr.c
sys/nfs/nfs_socket.c
sys/nfs/nfs_syscalls.c