OpenBSD cvs log

created 2022-03-28T05:13:31Z
begin 2022-03-21T19:46:56Z
end 2022-03-21T23:37:09Z
path src/sys
commits 1

date 2022-03-21T23:37:09Z
author bluhm
files src/sys/netinet/in_pcb.h log diff annotate
src/sys/netinet/udp_usrreq.c log diff annotate
message For multicast and broadcast packets udp_input() traverses the loop
of all UDP PCBs. From there it calls udp_sbappend() while holding
the UDP table mutex. This ends in sorwakeup() where we finally
grab the kernel lock while holding a mutex. Witness detects this
misuse.
Use the same solution as for PCB notify. Collect the affected PCBs
in a temporary list. The list is protected by exclusive net lock.
Reported-by: [email protected]
OK sashan@