From 354edc9c36ffffe61593e23f55a43078edf473fb Mon Sep 17 00:00:00 2001 From: sam Date: Sat, 8 Nov 2003 22:51:18 +0000 Subject: [PATCH] the sbappendaddr call in socket_send must be protected by Giant because it can happen from an MPSAFE callout Supported by: FreeBSD Foundation --- sys/netinet/ip_mroute.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sys/netinet/ip_mroute.c b/sys/netinet/ip_mroute.c index a7265ac1b3f..447cc27c5b2 100644 --- a/sys/netinet/ip_mroute.c +++ b/sys/netinet/ip_mroute.c @@ -1289,10 +1289,13 @@ static int socket_send(struct socket *s, struct mbuf *mm, struct sockaddr_in *src) { if (s) { + mtx_lock(&Giant); /* XXX until sockets are locked */ if (sbappendaddr(&s->so_rcv, (struct sockaddr *)src, mm, NULL) != 0) { sorwakeup(s); + mtx_unlock(&Giant); return 0; } + mtx_unlock(&Giant); } m_freem(mm); return -1; -- 2.45.2