diff options
author | Robert Watson <rwatson@FreeBSD.org> | 2005-08-03 00:18:35 +0000 |
---|---|---|
committer | Robert Watson <rwatson@FreeBSD.org> | 2005-08-03 00:18:35 +0000 |
commit | 13b203d0d78cc08a7e0da8e8d5eb8c1a5d94ab69 (patch) | |
tree | 9a4e586ffbcd1450917ee5e388a4e1eb38254e32 /sys/dev/sf | |
parent | bccb41014af4667b1cf2878456f5a8a854acf1f7 (diff) | |
download | src-13b203d0d78cc08a7e0da8e8d5eb8c1a5d94ab69.tar.gz src-13b203d0d78cc08a7e0da8e8d5eb8c1a5d94ab69.zip |
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
Notes
Notes:
svn path=/head/; revision=148654
Diffstat (limited to 'sys/dev/sf')
-rw-r--r-- | sys/dev/sf/if_sf.c | 2 |
1 files changed, 2 insertions, 0 deletions
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); } } |