CVSROOT: /cvs
Module name: src
Changes by: [email protected] 2022/09/05 08:56:09
Modified files:
sys/kern : uipc_socket.c uipc_socket2.c
sys/netinet : ip_divert.c ip_divert.h udp_usrreq.c udp_var.h
sys/netinet6 : ip6_divert.c ip6_divert.h
sys/sys : protosw.h socketvar.h
Log message:
Use shared netlock in soreceive(). The UDP and IP divert layer
provide locking of the PCB. If that is possible, use shared instead
of exclusive netlock in soreceive(). The PCB mutex provides a per
socket lock against multiple soreceive() running in parallel.
Release and regrab both locks in sosleep_nsec().
OK mvs@