diff options
| -rw-r--r-- | net/ipv6/route.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 166e33bed222..495965358d22 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
| @@ -1242,12 +1242,16 @@ restart: | |||
| 1242 | rt = net->ipv6.ip6_null_entry; | 1242 | rt = net->ipv6.ip6_null_entry; |
| 1243 | else if (rt->dst.error) { | 1243 | else if (rt->dst.error) { |
| 1244 | rt = net->ipv6.ip6_null_entry; | 1244 | rt = net->ipv6.ip6_null_entry; |
| 1245 | } else if (rt == net->ipv6.ip6_null_entry) { | 1245 | goto out; |
| 1246 | } | ||
| 1247 | |||
| 1248 | if (rt == net->ipv6.ip6_null_entry) { | ||
| 1246 | fn = fib6_backtrack(fn, &fl6->saddr); | 1249 | fn = fib6_backtrack(fn, &fl6->saddr); |
| 1247 | if (fn) | 1250 | if (fn) |
| 1248 | goto restart; | 1251 | goto restart; |
| 1249 | } | 1252 | } |
| 1250 | 1253 | ||
| 1254 | out: | ||
| 1251 | dst_hold(&rt->dst); | 1255 | dst_hold(&rt->dst); |
| 1252 | 1256 | ||
| 1253 | read_unlock_bh(&table->tb6_lock); | 1257 | read_unlock_bh(&table->tb6_lock); |
