freebsd-skq/sys/netinet6
Sergey Kandaurov 0ad2addc9d Fix if_addr_mtx recursion in mld6.
mld_set_version() is called only from mld_v1_input_query() and
mld_v2_input_query() both holding the if_addr_mtx lock, and then calling
into mld_v2_cancel_link_timers() acquires it the second time, which results
in mtx recursion. To avoid that, delay if_addr_mtx acquisition until after
mld_set_version() is called; while here, further reduce locking scope
to protect only the needed pieces: if_multiaddrs, in6m_lookup_locked().

PR:		kern/158426
Reported by:	Thomas <tps vr-web.de>,
		Tom Vijlbrief <tom.vijlbrief xs4all.nl>
Tested by:	Tom Vijlbrief
Reviewed by:	bz
Approved by:	re (kib)
2011-08-22 23:39:40 +00:00
..
dest6.c
frag6.c
icmp6.c
icmp6.h
in6_cksum.c
in6_gif.c
in6_gif.h
in6_ifattach.c
in6_ifattach.h
in6_mcast.c
in6_pcb.c
in6_pcb.h
in6_pcbgroup.c
in6_proto.c
in6_rmx.c
in6_src.c
in6_var.h
in6.c
in6.h
ip6_ecn.h
ip6_forward.c Add support for IPv6 to ipfw fwd: 2011-08-20 17:05:11 +00:00
ip6_id.c
ip6_input.c Add support for IPv6 to ipfw fwd: 2011-08-20 17:05:11 +00:00
ip6_ipsec.c
ip6_ipsec.h
ip6_mroute.c
ip6_mroute.h
ip6_output.c Add support for IPv6 to ipfw fwd: 2011-08-20 17:05:11 +00:00
ip6_var.h
ip6.h
ip6protosw.h
mld6_var.h
mld6.c Fix if_addr_mtx recursion in mld6. 2011-08-22 23:39:40 +00:00
mld6.h
nd6_nbr.c
nd6_rtr.c
nd6.c
nd6.h
pim6_var.h
pim6.h
raw_ip6.c
raw_ip6.h
route6.c
scope6_var.h
scope6.c
sctp6_usrreq.c
sctp6_var.h
send.c
send.h
tcp6_var.h
udp6_usrreq.c Add support for IPv6 to ipfw fwd: 2011-08-20 17:05:11 +00:00
udp6_var.h