freebsd-dev/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 Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
frag6.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
icmp6.c Update packet filter (pf) code to OpenBSD 4.5. 2011-06-28 11:57:25 +00:00
icmp6.h
in6_cksum.c Fix more continuous/contiguous typos (cf. r215955) 2010-11-27 21:51:39 +00:00
in6_gif.c Update packet filter (pf) code to OpenBSD 4.5. 2011-06-28 11:57:25 +00:00
in6_gif.h
in6_ifattach.c Add IFT_L2VLAN to the list that is capable of supplying the ingredients 2010-12-22 11:58:31 +00:00
in6_ifattach.h
in6_mcast.c Adapt r197136 to IPv6 stack: 2009-11-19 13:39:07 +00:00
in6_pcb.c Implement a CPU-affine TCP and UDP connection lookup data structure, 2011-06-06 12:55:02 +00:00
in6_pcb.h Implement a CPU-affine TCP and UDP connection lookup data structure, 2011-06-06 12:55:02 +00:00
in6_pcbgroup.c Implement a CPU-affine TCP and UDP connection lookup data structure, 2011-06-06 12:55:02 +00:00
in6_proto.c The socket API only specifies SCTP for SOCK_SEQPACKET and 2011-07-12 19:29:29 +00:00
in6_rmx.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
in6_src.c Decompose the current single inpcbinfo lock into two locks: 2011-05-30 09:43:55 +00:00
in6_var.h MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
in6.c Add an in6_localip() helper function as in6_localaddr() is not doing what 2011-08-20 16:43:47 +00:00
in6.h Add an in6_localip() helper function as in6_localaddr() is not doing what 2011-08-20 16:43:47 +00:00
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 Correct comments and debug logging in ipsec to better match reality. 2011-06-08 03:02:11 +00:00
ip6_ipsec.h
ip6_mroute.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
ip6_mroute.h Switch cmd argument to u_long. This matches what if_ethersubr.c does and 2009-06-21 10:29:31 +00:00
ip6_output.c Add support for IPv6 to ipfw fwd: 2011-08-20 17:05:11 +00:00
ip6_var.h - Accept Router Advertisement messages even when net.inet6.ip6.forwarding=1. 2011-06-06 02:14:23 +00:00
ip6.h
ip6protosw.h Introduce an infrastructure for dismantling vnet instances. 2009-06-08 17:15:40 +00:00
mld6_var.h Use ALLOW_NEW_SOURCES and BLOCK_OLD_SOURCES to signal a join or leave 2009-12-22 20:40:22 +00:00
mld6.c Fix if_addr_mtx recursion in mld6. 2011-08-22 23:39:40 +00:00
mld6.h Add MLDv2 protocol header, but do not connect it to the build. 2009-04-29 11:31:23 +00:00
nd6_nbr.c - Accept Router Advertisement messages even when net.inet6.ip6.forwarding=1. 2011-06-06 02:14:23 +00:00
nd6_rtr.c - Accept Router Advertisement messages even when net.inet6.ip6.forwarding=1. 2011-06-06 02:14:23 +00:00
nd6.c Do not activate automatic LL addr configuration when 0/1->1 transition of 2011-06-06 04:12:57 +00:00
nd6.h - Accept Router Advertisement messages even when net.inet6.ip6.forwarding=1. 2011-06-06 02:14:23 +00:00
pim6_var.h
pim6.h
raw_ip6.c optp may be NULL. 2010-08-20 17:52:49 +00:00
raw_ip6.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
route6.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
scope6_var.h
scope6.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
sctp6_usrreq.c The result of a joint work between rrs@ and myself at the IETF: 2011-08-03 20:21:00 +00:00
sctp6_var.h 1) Typo correction in comments and one spacing change. 2011-02-05 12:12:51 +00:00
send.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
send.h Use uint8_t for sockaddr sa_len. 2011-06-05 11:40:30 +00:00
tcp6_var.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
udp6_usrreq.c Add support for IPv6 to ipfw fwd: 2011-08-20 17:05:11 +00:00
udp6_var.h