freebsd-dev/sys/netinet6
Xin LI 64e0f48e7c Add a bandaid for a long-standing race condition during route entry
un-expiring.

The previous version of code have no locking when testing rt_refcnt.
The result of the lack of locking may result in a condition where
a routing entry have a reference count but at the same time have
RTPRF_OURS bit set and an expiration timer.  These would eventually
lead to a panic:

	panic: rtqkill route really not free

When the system have ICMP redirects accepted from local gateway
in a moderate frequency, for instance.

Commit this workaround for now until we have some better solution.

PR:		kern/149804
Reviewed by:	bz
Tested by:	Zhao Xin, Pete French
MFC after:	2 weeks
2010-09-27 19:26:56 +00:00
..
dest6.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
frag6.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
icmp6.c Fix mbuf leakages and remove unneccessary duplicate mbuf frees. 2010-08-19 23:16:44 +00:00
icmp6.h
in6_cksum.c
in6_gif.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
in6_gif.h
in6_ifattach.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
in6_ifattach.h
in6_mcast.c Adapt r197136 to IPv6 stack: 2009-11-19 13:39:07 +00:00
in6_pcb.c No need to include security/mac/mac_framework.h here. 2010-02-18 22:30:37 +00:00
in6_pcb.h Make callers to in6_selectsrc() and in6_pcbladdr() pass in memory 2009-06-23 22:08:55 +00:00
in6_proto.c Allow carp(4) to be loaded as a kernel module. Follow precedent set by 2010-08-11 00:51:50 +00:00
in6_rmx.c Add a bandaid for a long-standing race condition during route entry 2010-09-27 19:26:56 +00:00
in6_src.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
in6_var.h MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
in6.c Fix our version of IPv6 address representation. 2010-05-19 00:35:47 +00:00
in6.h - Rename IP_NONLOCALOK IP socket option to IP_BINDANY, to be more consistent 2009-06-01 10:30:00 +00:00
ip6_ecn.h
ip6_forward.c Virtualize the pfil hooks so that different jails may chose different 2009-10-11 05:59:43 +00:00
ip6_id.c
ip6_input.c MFp4 CH=183052 183053 183258: 2010-09-02 17:43:44 +00:00
ip6_ipsec.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
ip6_ipsec.h
ip6_mroute.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
ip6_mroute.h Switch cmd argument to u_long. This matches what if_ethersubr.c does and 2009-06-21 10:29:31 +00:00
ip6_output.c IP_BINDANY is not correctly handled in getsockopt() case. 2010-09-24 14:38:54 +00:00
ip6_var.h MFp4 CH=183052 183053 183258: 2010-09-02 17:43:44 +00:00
ip6.h
ip6protosw.h Introduce an infrastructure for dismantling vnet instances. 2009-06-08 17:15:40 +00:00
mld6_var.h Use ALLOW_NEW_SOURCES and BLOCK_OLD_SOURCES to signal a join or leave 2009-12-22 20:40:22 +00:00
mld6.c When embedding the scope ID in MLDv1 output, check if the scope of the address 2010-04-10 12:24:21 +00:00
mld6.h Add MLDv2 protocol header, but do not connect it to the build. 2009-04-29 11:31:23 +00:00
nd6_nbr.c MFp4: anchie_soc2009 branch: 2010-08-19 11:31:03 +00:00
nd6_rtr.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
nd6.c MFp4: anchie_soc2009 branch: 2010-08-19 11:31:03 +00:00
nd6.h MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
pim6_var.h
pim6.h
raw_ip6.c optp may be NULL. 2010-08-20 17:52:49 +00:00
raw_ip6.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
route6.c Merge the remainder of kern_vimage.c and vimage.h into vnet.c and 2009-08-01 19:26:27 +00:00
scope6_var.h
scope6.c MFP4: @176978-176982, 176984, 176990-176994, 177441 2010-04-29 11:52:42 +00:00
sctp6_usrreq.c Remove unused variables. 2010-09-15 20:41:20 +00:00
sctp6_var.h
send.c MFp4: anchie_soc2009 branch: 2010-08-19 11:31:03 +00:00
send.h MFp4: anchie_soc2009 branch: 2010-08-19 11:31:03 +00:00
tcp6_var.h Remove unused VNET_SET() and related macros; only VNET_GET() is 2009-07-16 21:13:04 +00:00
udp6_usrreq.c Add flowtable support to IPv6 2010-05-09 20:32:00 +00:00
udp6_var.h