|
@@ -1366,8 +1366,8 @@ static void ip6_link_failure(struct sk_buff *skb)
|
|
|
rt = (struct rt6_info *) skb_dst(skb);
|
|
rt = (struct rt6_info *) skb_dst(skb);
|
|
|
if (rt) {
|
|
if (rt) {
|
|
|
if (rt->rt6i_flags & RTF_CACHE) {
|
|
if (rt->rt6i_flags & RTF_CACHE) {
|
|
|
- dst_hold(&rt->dst);
|
|
|
|
|
- ip6_del_rt(rt);
|
|
|
|
|
|
|
+ if (dst_hold_safe(&rt->dst))
|
|
|
|
|
+ ip6_del_rt(rt);
|
|
|
} else if (rt->rt6i_node && (rt->rt6i_flags & RTF_DEFAULT)) {
|
|
} else if (rt->rt6i_node && (rt->rt6i_flags & RTF_DEFAULT)) {
|
|
|
rt->rt6i_node->fn_sernum = -1;
|
|
rt->rt6i_node->fn_sernum = -1;
|
|
|
}
|
|
}
|