CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2025/02/05 01:28:25
Modified files:
sys/kern : uipc_socket.c
Log message:
Rework filt_sor{modify,process}().
Split them by filt_sor*() and filt_soe*() functions for `soread_filtops'
and `soexcept_filtops' respectively. The filt_soexcept() path is like
filt_sowrite() and the `sb_mtx' serialization is pretty enough, but
filt_soread() is more complicated for the connection oriented sockets.
It is not yet clean is the concurrent SO_ACCEPTCONN transition safe for
select(2) and poll(2), so keep socket lock together with `sb_mtx' lock
for that case.
Get rid of sofilt_*lock() functions. They were temporary made to take
`sb_mtx' mutex with shared netlock for inet sockets case or with socket
lock for other cases. Now shared netlock is not enough and should be
taken together with `so_lock' rwlock. We have special solock_shared()
function for that purpose, so use it directly in corresponding
filt_sor*() handlers.
Tested by bluhm, additional arm64 tests by kirill.
ok kirill bluhm