diff options
| author | Patrick McHardy <kaber@trash.net> | 2010-04-20 16:02:01 +0200 | 
|---|---|---|
| committer | Patrick McHardy <kaber@trash.net> | 2010-04-20 16:02:01 +0200 | 
| commit | 62910554656cdcd6b6f84a5154c4155aae4ca231 (patch) | |
| tree | dcf14004f6fd2ef7154362ff948bfeba0f3ea92d /net/ipv6/route.c | |
| parent | 22265a5c3c103cf8c50be62e6c90d045eb649e6d (diff) | |
| parent | ab9304717f7624c41927f442e6b6d418b2d8b3e4 (diff) | |
| download | olio-linux-3.10-62910554656cdcd6b6f84a5154c4155aae4ca231.tar.xz olio-linux-3.10-62910554656cdcd6b6f84a5154c4155aae4ca231.zip  | |
Merge branch 'master' of /repos/git/net-next-2.6
Conflicts:
	Documentation/feature-removal-schedule.txt
	net/ipv6/netfilter/ip6t_REJECT.c
	net/netfilter/xt_limit.c
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net/ipv6/route.c')
| -rw-r--r-- | net/ipv6/route.c | 16 | 
1 files changed, 11 insertions, 5 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 52cd3eff31d..c2438e8cb9d 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c @@ -40,6 +40,7 @@  #include <linux/proc_fs.h>  #include <linux/seq_file.h>  #include <linux/nsproxy.h> +#include <linux/slab.h>  #include <net/net_namespace.h>  #include <net/snmp.h>  #include <net/ipv6.h> @@ -879,7 +880,7 @@ static struct dst_entry *ip6_dst_check(struct dst_entry *dst, u32 cookie)  	rt = (struct rt6_info *) dst; -	if (rt && rt->rt6i_node && (rt->rt6i_node->fn_sernum == cookie)) +	if (rt->rt6i_node && (rt->rt6i_node->fn_sernum == cookie))  		return dst;  	return NULL; @@ -890,12 +891,17 @@ static struct dst_entry *ip6_negative_advice(struct dst_entry *dst)  	struct rt6_info *rt = (struct rt6_info *) dst;  	if (rt) { -		if (rt->rt6i_flags & RTF_CACHE) -			ip6_del_rt(rt); -		else +		if (rt->rt6i_flags & RTF_CACHE) { +			if (rt6_check_expired(rt)) { +				ip6_del_rt(rt); +				dst = NULL; +			} +		} else {  			dst_release(dst); +			dst = NULL; +		}  	} -	return NULL; +	return dst;  }  static void ip6_link_failure(struct sk_buff *skb)  |