ipv6: Fix __ip6_route_redirect
In my last commit (a3c00e4: ipv6: Remove BACKTRACK macro), the changes in
__ip6_route_redirect is incorrect. The following case is missed:
1. The for loop tries to find a valid gateway rt. If it fails to find
one, rt will be NULL.
2. When rt is NULL, it is set to the ip6_null_entry.
3. The newly added 'else if', from a3c00e4
, will stop the backtrack from
happening.
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
24df8986f3
commit
b0a1ba5992
|
@ -1242,12 +1242,16 @@ restart:
|
|||
rt = net->ipv6.ip6_null_entry;
|
||||
else if (rt->dst.error) {
|
||||
rt = net->ipv6.ip6_null_entry;
|
||||
} else if (rt == net->ipv6.ip6_null_entry) {
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (rt == net->ipv6.ip6_null_entry) {
|
||||
fn = fib6_backtrack(fn, &fl6->saddr);
|
||||
if (fn)
|
||||
goto restart;
|
||||
}
|
||||
|
||||
out:
|
||||
dst_hold(&rt->dst);
|
||||
|
||||
read_unlock_bh(&table->tb6_lock);
|
||||
|
|
Loading…
Reference in New Issue