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>
