diff options
author | pluknet <pluknet@FreeBSD.org> | 2011-08-22 23:39:40 +0000 |
---|---|---|
committer | pluknet <pluknet@FreeBSD.org> | 2011-08-22 23:39:40 +0000 |
commit | 081544b729b53a21469898ef85a4f838148d1e71 (patch) | |
tree | d5427dd27753b8ee18fb0c63679269db8626ac90 /lib/libc/string/wcscmp.c | |
parent | 4145a19caa34892593779c20f0b391fb661462ed (diff) | |
download | FreeBSD-src-081544b729b53a21469898ef85a4f838148d1e71.zip FreeBSD-src-081544b729b53a21469898ef85a4f838148d1e71.tar.gz |
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)
Diffstat (limited to 'lib/libc/string/wcscmp.c')
0 files changed, 0 insertions, 0 deletions