Commit 707be1ff authored by YOSHIFUJI Hideaki / 吉藤英明's avatar YOSHIFUJI Hideaki / 吉藤英明 Committed by David S. Miller

ipv6: Do not depend on rt->n in ip6_dst_lookup_tail().

Signed-off-by: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9bb5a148
...@@ -913,8 +913,12 @@ static int ip6_dst_lookup_tail(struct sock *sk, ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment