in6_joingroup_locked: need if_addr_lock around in6m_disconnect_locked
It looks like the call that requires the lock was introduced in r337866. Reviewed by: hselasky Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D20739
This commit is contained in:
parent
985d08fe52
commit
6afe56f9c3
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=355102
@ -1267,6 +1267,7 @@ in6_joingroup_locked(struct ifnet *ifp, const struct in6_addr *mcaddr,
|
||||
struct epoch_tracker et;
|
||||
|
||||
CTR2(KTR_MLD, "%s: dropping ref on %p", __func__, inm);
|
||||
IF_ADDR_WLOCK(ifp);
|
||||
NET_EPOCH_ENTER(et);
|
||||
CK_STAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) {
|
||||
if (ifma->ifma_protospec == inm) {
|
||||
@ -1277,6 +1278,7 @@ in6_joingroup_locked(struct ifnet *ifp, const struct in6_addr *mcaddr,
|
||||
in6m_disconnect_locked(&inmh, inm);
|
||||
in6m_rele_locked(&inmh, inm);
|
||||
NET_EPOCH_EXIT(et);
|
||||
IF_ADDR_WUNLOCK(ifp);
|
||||
} else {
|
||||
*pinm = inm;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user