From owner-cvs-src-old@FreeBSD.ORG Tue Jun 23 20:25:34 2009 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7C6D21065677 for ; Tue, 23 Jun 2009 20:25:34 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 656FB8FC2D for ; Tue, 23 Jun 2009 20:25:34 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n5NKPYxg056676 for ; Tue, 23 Jun 2009 20:25:34 GMT (envelope-from rwatson@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n5NKPYfo056675 for cvs-src-old@freebsd.org; Tue, 23 Jun 2009 20:25:34 GMT (envelope-from rwatson@repoman.freebsd.org) Message-Id: <200906232025.n5NKPYfo056675@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to rwatson@repoman.freebsd.org using -f From: Robert Watson Date: Tue, 23 Jun 2009 20:19:09 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD 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 ... X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Jun 2009 20:25:34 -0000 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