freebsd-skq/sys/netinet6
delphij f0a3248def 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
frag6.c
icmp6.c
icmp6.h
in6_cksum.c
in6_gif.c
in6_gif.h
in6_ifattach.c
in6_ifattach.h
in6_mcast.c
in6_pcb.c
in6_pcb.h
in6_proto.c
in6_rmx.c
in6_src.c
in6_var.h
in6.c
in6.h
ip6_ecn.h
ip6_forward.c
ip6_id.c
ip6_input.c
ip6_ipsec.c
ip6_ipsec.h
ip6_mroute.c
ip6_mroute.h
ip6_output.c
ip6_var.h
ip6.h
ip6protosw.h
mld6_var.h
mld6.c
mld6.h
nd6_nbr.c
nd6_rtr.c
nd6.c
nd6.h
pim6_var.h
pim6.h
raw_ip6.c
raw_ip6.h
route6.c
scope6_var.h
scope6.c
sctp6_usrreq.c
sctp6_var.h
send.c
send.h
tcp6_var.h
udp6_usrreq.c
udp6_var.h