|
@@ -739,8 +739,10 @@ restart:
|
|
|
|
|
|
if (!rt->rt6i_nexthop && !(rt->rt6i_flags & RTF_NONEXTHOP))
|
|
if (!rt->rt6i_nexthop && !(rt->rt6i_flags & RTF_NONEXTHOP))
|
|
nrt = rt6_alloc_cow(rt, &fl->fl6_dst, &fl->fl6_src);
|
|
nrt = rt6_alloc_cow(rt, &fl->fl6_dst, &fl->fl6_src);
|
|
- else
|
|
|
|
|
|
+ else if (!(rt->dst.flags & DST_HOST))
|
|
nrt = rt6_alloc_clone(rt, &fl->fl6_dst);
|
|
nrt = rt6_alloc_clone(rt, &fl->fl6_dst);
|
|
|
|
+ else
|
|
|
|
+ goto out2;
|
|
|
|
|
|
dst_release(&rt->dst);
|
|
dst_release(&rt->dst);
|
|
rt = nrt ? : net->ipv6.ip6_null_entry;
|
|
rt = nrt ? : net->ipv6.ip6_null_entry;
|