]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC 225096:
authorjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 19 Mar 2012 20:15:18 +0000 (20:15 +0000)
committerjhb <jhb@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 19 Mar 2012 20:15:18 +0000 (20:15 +0000)
commite530c804f421c4f00cb23de256b4966286e2e78b
treebae9612cc68e4b09cd4b67fd1e9fafe3ba6d4150
parent898e9a8e12bfa7cf7f404f3b9d4dc0c793a70022
MFC 225096:
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().

git-svn-id: svn://svn.freebsd.org/base/stable/8@233199 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/netinet6/mld6.c