From 13b203d0d78cc08a7e0da8e8d5eb8c1a5d94ab69 Mon Sep 17 00:00:00 2001 From: Robert Watson Date: Wed, 3 Aug 2005 00:18:35 +0000 Subject: Modify device drivers supporting multicast addresses to lock if_addr_mtx over iteration of their multicast address lists when synchronizing the hardware address filter with the network stack-maintained list. Problem reported by: Ed Maste (emaste at phaedrus dot sandvine dot ca> MFC after: 1 week --- sys/dev/sf/if_sf.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'sys/dev/sf') diff --git a/sys/dev/sf/if_sf.c b/sys/dev/sf/if_sf.c index a64379fe2c82..5485fb7e6cfe 100644 --- a/sys/dev/sf/if_sf.c +++ b/sys/dev/sf/if_sf.c @@ -431,6 +431,7 @@ sf_setmulti(sc) SF_SETBIT(sc, SF_RXFILT, SF_RXFILT_ALLMULTI); } else { i = 1; + IF_ADDR_LOCK(ifp); TAILQ_FOREACH_REVERSE(ifma, &ifp->if_multiaddrs, ifmultihead, ifma_link) { if (ifma->ifma_addr->sa_family != AF_LINK) continue; @@ -449,6 +450,7 @@ sf_setmulti(sc) sf_sethash(sc, LLADDR((struct sockaddr_dl *)ifma->ifma_addr), 0); } + IF_ADDR_UNLOCK(ifp); } } -- cgit v1.2.3