Protect socket receive buffer in IP multicast routing.
authorbluhm <bluhm@openbsd.org>
Wed, 6 Dec 2023 09:27:17 +0000 (09:27 +0000)
committerbluhm <bluhm@openbsd.org>
Wed, 6 Dec 2023 09:27:17 +0000 (09:27 +0000)
commit82ac09857ecee1adaad50268321bdc3a3bdabbe6
tree40ac7dc313e47694a39c841cd84da62bf3677f27
parent6750a6d9ed379192e2f26860ea46d0fa79c53de8
Protect socket receive buffer in IP multicast routing.

Since soreceive() runs in parallel for raw sockets, sbappendaddr()
has to be protected by inpcb mutex.  This was missing in multicast
forwarding which is running with a combination of shared net lock
and kernel lock.  soreceive() uses shared net lock and mutex per
inpcb.  Grab mutex before sbappendaddr() in socket_send() and
socket6_send().

panic receive 1 reported by Jo Geraerts
OK mvs@ claudio@
sys/netinet/ip_mroute.c
sys/netinet6/ip6_mroute.c