CVSROOT:        /cvs
Module name:    src
Changes by:     [email protected]   2022/03/21 17:37:09

Modified files:
        sys/netinet    : in_pcb.h udp_usrreq.c 

Log 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@

Reply via email to