diff options
| -rw-r--r-- | net/ipv6/mip6.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv6/mip6.c b/net/ipv6/mip6.c index 2794b6002836..d6e9599d0705 100644 --- a/net/ipv6/mip6.c +++ b/net/ipv6/mip6.c | |||
| @@ -347,11 +347,12 @@ static const struct xfrm_type mip6_destopt_type = | |||
| 347 | 347 | ||
| 348 | static int mip6_rthdr_input(struct xfrm_state *x, struct sk_buff *skb) | 348 | static int mip6_rthdr_input(struct xfrm_state *x, struct sk_buff *skb) |
| 349 | { | 349 | { |
| 350 | struct ipv6hdr *iph = ipv6_hdr(skb); | ||
| 350 | struct rt2_hdr *rt2 = (struct rt2_hdr *)skb->data; | 351 | struct rt2_hdr *rt2 = (struct rt2_hdr *)skb->data; |
| 351 | int err = rt2->rt_hdr.nexthdr; | 352 | int err = rt2->rt_hdr.nexthdr; |
| 352 | 353 | ||
| 353 | spin_lock(&x->lock); | 354 | spin_lock(&x->lock); |
| 354 | if (!ipv6_addr_equal(&rt2->addr, (struct in6_addr *)x->coaddr) && | 355 | if (!ipv6_addr_equal(&iph->daddr, (struct in6_addr *)x->coaddr) && |
| 355 | !ipv6_addr_any((struct in6_addr *)x->coaddr)) | 356 | !ipv6_addr_any((struct in6_addr *)x->coaddr)) |
| 356 | err = -ENOENT; | 357 | err = -ENOENT; |
| 357 | spin_unlock(&x->lock); | 358 | spin_unlock(&x->lock); |
