CVSROOT:        /cvs
Module name:    src
Changes by:     bl...@cvs.openbsd.org   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: syzbot+7596cb96fb9f3c9d6...@syzkaller.appspotmail.com
OK sashan@

Reply via email to