ipv6: Do not depend on rt->n in ip6_dst_lookup_tail().
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
9bb5a14813
commit
707be1ff3d
@@ -913,8 +913,12 @@ static int ip6_dst_lookup_tail(struct sock *sk,
|
|||||||
* dst entry of the nexthop router
|
* dst entry of the nexthop router
|
||||||
*/
|
*/
|
||||||
rt = (struct rt6_info *) *dst;
|
rt = (struct rt6_info *) *dst;
|
||||||
n = rt->n;
|
rcu_read_lock_bh();
|
||||||
if (n && !(n->nud_state & NUD_VALID)) {
|
n = __ipv6_neigh_lookup_noref(rt->dst.dev, rt6_nexthop(rt, &fl6->daddr));
|
||||||
|
err = n && !(n->nud_state & NUD_VALID) ? -EINVAL : 0;
|
||||||
|
rcu_read_unlock_bh();
|
||||||
|
|
||||||
|
if (err) {
|
||||||
struct inet6_ifaddr *ifp;
|
struct inet6_ifaddr *ifp;
|
||||||
struct flowi6 fl_gw6;
|
struct flowi6 fl_gw6;
|
||||||
int redirect;
|
int redirect;
|
||||||
|
Reference in New Issue
Block a user