Date: Tue, 23 Jun 2009 20:19:09 +0000 (UTC) From: Robert Watson <rwatson@FreeBSD.org> To: cvs-src-old@freebsd.org Subject: cvs commit: src/sys/contrib/rdma rdma_addr.c rdma_cma.c src/sys/net if.c route.c rtsock.c src/sys/net80211 ieee80211.c src/sys/netinet igmp.c in.c in_mcast.c in_pcb.c in_var.h ip_carp.c ip_divert.c ip_icmp.c ip_input.c ip_mroute.c ip_options.c ... Message-ID: <200906232025.n5NKPYfo056675@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
rwatson 2009-06-23 20:19:09 UTC FreeBSD src repository Modified files: sys/contrib/rdma rdma_addr.c rdma_cma.c sys/net if.c route.c rtsock.c sys/net80211 ieee80211.c sys/netinet igmp.c in.c in_mcast.c in_pcb.c in_var.h ip_carp.c ip_divert.c ip_icmp.c ip_input.c ip_mroute.c ip_options.c ip_output.c tcp_input.c sys/netinet6 frag6.c icmp6.c in6.c in6_ifattach.c in6_pcb.c in6_src.c in6_var.h ip6_input.c ip6_output.c mld6.c nd6.c nd6_nbr.c nd6_rtr.c raw_ip6.c sys/netipx ipx_pcb.c Log: SVN rev 194760 on 2009-06-23 20:19:09Z by rwatson Modify most routines returning 'struct ifaddr *' to return references rather than pointers, requiring callers to properly dispose of those references. The following routines now return references: ifaddr_byindex ifa_ifwithaddr ifa_ifwithbroadaddr ifa_ifwithdstaddr ifa_ifwithnet ifaof_ifpforaddr ifa_ifwithroute ifa_ifwithroute_fib rt_getifa rt_getifa_fib IFP_TO_IA ip_rtaddr in6_ifawithifp in6ifa_ifpforlinklocal in6ifa_ifpwithaddr in6_ifadd carp_iamatch6 ip6_getdstifaddr Remove unused macro which didn't have required referencing: IFP_TO_IA6 This closes many small races in which changes to interface or address lists while an ifaddr was in use could lead to use of freed memory (etc). In a few cases, add missing if_addr_list locking required to safely acquire references. Because of a lack of deep copying support, we accept a race in which an in6_ifaddr pointed to by mbuf tags and extracted with ip6_getdstifaddr() doesn't hold a reference while in transmit. Once we have mbuf tag deep copy support, this can be fixed. Reviewed by: bz Obtained from: Apple, Inc. (portions) MFC after: 6 weeks (portions) Revision Changes Path 1.3 +4 -1 src/sys/contrib/rdma/rdma_addr.c 1.5 +1 -0 src/sys/contrib/rdma/rdma_cma.c 1.347 +32 -11 src/sys/net/if.c 1.162 +33 -9 src/sys/net/route.c 1.178 +7 -0 src/sys/net/rtsock.c 1.80 +1 -0 src/sys/net80211/ieee80211.c 1.83 +17 -4 src/sys/netinet/igmp.c 1.138 +50 -65 src/sys/netinet/in.c 1.24 +1 -0 src/sys/netinet/in_mcast.c 1.255 +8 -3 src/sys/netinet/in_pcb.c 1.71 +10 -8 src/sys/netinet/in_var.h 1.66 +1 -0 src/sys/netinet/ip_carp.c 1.151 +1 -0 src/sys/netinet/ip_divert.c 1.133 +6 -2 src/sys/netinet/ip_icmp.c 1.365 +22 -4 src/sys/netinet/ip_input.c 1.153 +1 -0 src/sys/netinet/ip_mroute.c 1.19 +5 -3 src/sys/netinet/ip_options.c 1.312 +3 -0 src/sys/netinet/ip_output.c 1.407 +5 -1 src/sys/netinet/tcp_input.c 1.46 +3 -1 src/sys/netinet6/frag6.c 1.112 +9 -1 src/sys/netinet6/icmp6.c 1.113 +86 -37 src/sys/netinet6/in6.c 1.69 +10 -3 src/sys/netinet6/in6_ifattach.c 1.115 +8 -4 src/sys/netinet6/in6_pcb.c 1.68 +12 -1 src/sys/netinet6/in6_src.c 1.40 +0 -19 src/sys/netinet6/in6_var.h 1.126 +12 -3 src/sys/netinet6/ip6_input.c 1.135 +1 -0 src/sys/netinet6/ip6_output.c 1.51 +18 -3 src/sys/netinet6/mld6.c 1.118 +7 -2 src/sys/netinet6/nd6.c 1.65 +12 -2 src/sys/netinet6/nd6_nbr.c 1.68 +28 -6 src/sys/netinet6/nd6_rtr.c 1.107 +7 -4 src/sys/netinet6/raw_ip6.c 1.53 +27 -7 src/sys/netipx/ipx_pcb.c
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906232025.n5NKPYfo056675>