created | 2024-07-16T14:13:31Z |
---|---|
begin | 2024-07-12T14:53:09Z |
end | 2024-07-12T17:20:18Z |
path | src/sys |
commits | 1 |
date | 2024-07-12T17:20:18Z | |||
---|---|---|---|---|
author | mvs | |||
files | src/sys/kern/uipc_socket.c | log | diff | annotate |
src/sys/kern/uipc_socket2.c | log | diff | annotate | |
src/sys/miscfs/fifofs/fifo_vnops.c | log | diff | annotate | |
src/sys/net/rtsock.c | log | diff | annotate | |
src/sys/nfs/nfs_socket.c | log | diff | annotate | |
src/sys/sys/socketvar.h | log | diff | annotate | |
message |
Switch `so_snd' of udp(4) sockets to the new locking scheme. udp_send() and following udp{,6}_output() do not append packets to `so_snd' socket buffer. This mean the sosend() and sosplice() sending paths are dummy pru_send() and there is no problems to simultaneously run them on the same socket. Push shared solock() deep down to sesend() and take it only around pru_send(), but keep somove() running unedr exclusive solock(). Since sosend() doesn't modify `so_snd' the unlocked `so_snd' space checks within somove() are safe. Corresponding `sb_state' and `sb_flags' modifications are protected by `sb_mtx' mutex(9). Tested and OK bluhm. |