diff options
Diffstat (limited to 'net/ipv6/route.c')
-rw-r--r-- | net/ipv6/route.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index d55d00c2a824..001276055a6b 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -783,8 +783,10 @@ restart: | |||
783 | 783 | ||
784 | if (!rt->rt6i_nexthop && !(rt->rt6i_flags & RTF_NONEXTHOP)) | 784 | if (!rt->rt6i_nexthop && !(rt->rt6i_flags & RTF_NONEXTHOP)) |
785 | nrt = rt6_alloc_cow(rt, &fl->fl6_dst, &fl->fl6_src); | 785 | nrt = rt6_alloc_cow(rt, &fl->fl6_dst, &fl->fl6_src); |
786 | else | 786 | else if (!(rt->dst.flags & DST_HOST)) |
787 | nrt = rt6_alloc_clone(rt, &fl->fl6_dst); | 787 | nrt = rt6_alloc_clone(rt, &fl->fl6_dst); |
788 | else | ||
789 | goto out2; | ||
788 | 790 | ||
789 | dst_release(&rt->dst); | 791 | dst_release(&rt->dst); |
790 | rt = nrt ? : net->ipv6.ip6_null_entry; | 792 | rt = nrt ? : net->ipv6.ip6_null_entry; |