Author: gallatin Date: Thu May 10 16:19:41 2018 New Revision: 333462 URL: https://svnweb.freebsd.org/changeset/base/333462
Log: Fix a panic in the IPv6 multicast code. Use LIST_FOREACH_SAFE in in6m_disconnect() since we're deleting and freeing item from the membership list while traversing the list. Reviewed by: mmacy Sponsored by: Netflix Modified: head/sys/netinet6/in6_mcast.c Modified: head/sys/netinet6/in6_mcast.c ============================================================================== --- head/sys/netinet6/in6_mcast.c Thu May 10 15:01:43 2018 (r333461) +++ head/sys/netinet6/in6_mcast.c Thu May 10 16:19:41 2018 (r333462) @@ -581,7 +581,7 @@ in6m_disconnect(struct in6_multi *inm) struct ifnet *ifp; struct ifaddr *ifa; struct in6_ifaddr *ifa6; - struct in6_multi_mship *imm; + struct in6_multi_mship *imm, *imm_tmp; struct ifmultiaddr *ifma, *ll_ifma; ifp = inm->in6m_ifp; @@ -607,7 +607,8 @@ in6m_disconnect(struct in6_multi *inm) if (ifa->ifa_addr->sa_family != AF_INET6) continue; ifa6 = (void *)ifa; - LIST_FOREACH(imm, &ifa6->ia6_memberships, i6mm_chain) { + LIST_FOREACH_SAFE(imm, &ifa6->ia6_memberships, + i6mm_chain, imm_tmp) { if (inm == imm->i6mm_maddr) { LIST_REMOVE(imm, i6mm_chain); free(imm, M_IP6MADDR); _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"