1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-18 10:35:55 +00:00
freebsd/sys/netinet6
John Baldwin c6f4ea8062 When cancelling multicast timers on an interface, don't release the
reference on a group in the leaving state while iterating over the loop.
Instead, use the same approach used in igmp_ifdetach() and mld_ifdetach()
of placing the groups to free on pending release list and then releasing
the references after dropping the IF_ADDR_LOCK.  This closes an ugly race
where the code was dropping the lock in the middle of iterating over the
list.  It also fixes some additional potential use-after-free bugs since
the cancellation routine also applied other changes to the group after
dropping the reference.  Now those changes are performed before the
reference is dropped and the group is potentially freed.

Prodded to fix by:	glebius
Reviewed by:	bz
MFC after:	1 week
2012-01-03 20:34:52 +00:00
..
dest6.c
frag6.c After some off-list discussion, revert a number of changes to the 2010-11-22 19:32:54 +00:00
icmp6.c Use queue(3) macros instead of home-rolled versions in several places in 2011-12-29 18:25:18 +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 Use queue(3) macros instead of home-rolled versions in several places in 2011-12-29 18:25:18 +00:00
in6_ifattach.h
in6_mcast.c Return the correct value for the IPV6_MULTICAST_HOPS getsockopt() call. 2011-11-13 02:32:10 +00:00
in6_pcb.c Fix false positive EADDRINUSE that could be returned by bind, due to 2011-11-11 14:09:09 +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 o Convert IPv6 read-only stats sysctls to the read-write ones. 2011-12-19 05:50:34 +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 Mark all SYSCTL_NODEs static that have no corresponding SYSCTL_DECLs. 2011-11-07 15:43:11 +00:00
in6_var.h Remove an uneeded inpcb forward declaration and align the function 2012-01-02 13:03:13 +00:00
in6.c Grab a reference on the matching interface address (ifa) in the handling 2012-01-03 19:44:36 +00:00
in6.h Make KBI changes required for future MFCing of inpcb rtentry / llentry caching. 2011-09-20 20:27:26 +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 o Convert IPv6 read-only stats sysctls to the read-write ones. 2011-12-19 05:50:34 +00:00
ip6_mroute.h
ip6_output.c Cache SO_REUSEPORT socket option in inpcb-layer in order to avoid 2011-11-06 10:47:20 +00:00
ip6_var.h Add $ipv6_cpe_wanif to enable functionality required for IPv6 CPE 2011-09-13 00:06:11 +00:00
ip6.h
ip6protosw.h
mld6_var.h
mld6.c When cancelling multicast timers on an interface, don't release the 2012-01-03 20:34:52 +00:00
mld6.h
nd6_nbr.c A major overhaul of the CARP implementation. The ip_carp.c was started 2011-12-16 12:16:56 +00:00
nd6_rtr.c Use queue(3) macros instead of home-rolled versions in several places in 2011-12-29 18:25:18 +00:00
nd6.c Use queue(3) macros instead of home-rolled versions in several places in 2011-12-29 18:25:18 +00:00
nd6.h Use queue(3) macros instead of home-rolled versions in several places in 2011-12-29 18:25:18 +00:00
pim6_var.h
pim6.h
raw_ip6.c
raw_ip6.h
route6.c
scope6_var.h Remove a declaration to a non-existent function. 2011-12-31 16:19:22 +00:00
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 Address issues found by clang. While there, fix also some style 2011-12-27 10:16:24 +00:00
sctp6_var.h Fix unused parameter warnings. 2011-12-17 19:21:40 +00:00
send.c Mark MALLOC_DEFINEs static that have no corresponding MALLOC_DECLAREs. 2011-11-07 06:44:47 +00:00
send.h Use uint8_t for sockaddr sa_len. 2011-06-05 11:40:30 +00:00
tcp6_var.h
udp6_usrreq.c Add support for IPv6 to ipfw fwd: 2011-08-20 17:05:11 +00:00
udp6_var.h