diff options
author | James Morris <james.l.morris@oracle.com> | 2014-11-19 05:32:12 -0500 |
---|---|---|
committer | James Morris <james.l.morris@oracle.com> | 2014-11-19 05:32:12 -0500 |
commit | b10778a00d40b3d9fdaaf5891e802794781ff71c (patch) | |
tree | 6ba4cbac86eecedc3f30650e7f764ecf00c83898 /net/ipv6/raw.c | |
parent | 594081ee7145cc30a3977cb4e218f81213b63dc5 (diff) | |
parent | bfe01a5ba2490f299e1d2d5508cbbbadd897bbe9 (diff) |
Merge commit 'v3.17' into next
Diffstat (limited to 'net/ipv6/raw.c')
-rw-r--r-- | net/ipv6/raw.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/net/ipv6/raw.c b/net/ipv6/raw.c index b2dc60b0c764..39d44226e402 100644 --- a/net/ipv6/raw.c +++ b/net/ipv6/raw.c | |||
@@ -176,7 +176,7 @@ static bool ipv6_raw_deliver(struct sk_buff *skb, int nexthdr) | |||
176 | goto out; | 176 | goto out; |
177 | 177 | ||
178 | net = dev_net(skb->dev); | 178 | net = dev_net(skb->dev); |
179 | sk = __raw_v6_lookup(net, sk, nexthdr, daddr, saddr, IP6CB(skb)->iif); | 179 | sk = __raw_v6_lookup(net, sk, nexthdr, daddr, saddr, inet6_iif(skb)); |
180 | 180 | ||
181 | while (sk) { | 181 | while (sk) { |
182 | int filtered; | 182 | int filtered; |
@@ -220,7 +220,7 @@ static bool ipv6_raw_deliver(struct sk_buff *skb, int nexthdr) | |||
220 | } | 220 | } |
221 | } | 221 | } |
222 | sk = __raw_v6_lookup(net, sk_next(sk), nexthdr, daddr, saddr, | 222 | sk = __raw_v6_lookup(net, sk_next(sk), nexthdr, daddr, saddr, |
223 | IP6CB(skb)->iif); | 223 | inet6_iif(skb)); |
224 | } | 224 | } |
225 | out: | 225 | out: |
226 | read_unlock(&raw_v6_hashinfo.lock); | 226 | read_unlock(&raw_v6_hashinfo.lock); |
@@ -375,7 +375,7 @@ void raw6_icmp_error(struct sk_buff *skb, int nexthdr, | |||
375 | net = dev_net(skb->dev); | 375 | net = dev_net(skb->dev); |
376 | 376 | ||
377 | while ((sk = __raw_v6_lookup(net, sk, nexthdr, saddr, daddr, | 377 | while ((sk = __raw_v6_lookup(net, sk, nexthdr, saddr, daddr, |
378 | IP6CB(skb)->iif))) { | 378 | inet6_iif(skb)))) { |
379 | rawv6_err(sk, skb, NULL, type, code, | 379 | rawv6_err(sk, skb, NULL, type, code, |
380 | inner_offset, info); | 380 | inner_offset, info); |
381 | sk = sk_next(sk); | 381 | sk = sk_next(sk); |
@@ -506,7 +506,7 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk, | |||
506 | sin6->sin6_addr = ipv6_hdr(skb)->saddr; | 506 | sin6->sin6_addr = ipv6_hdr(skb)->saddr; |
507 | sin6->sin6_flowinfo = 0; | 507 | sin6->sin6_flowinfo = 0; |
508 | sin6->sin6_scope_id = ipv6_iface_scope_id(&sin6->sin6_addr, | 508 | sin6->sin6_scope_id = ipv6_iface_scope_id(&sin6->sin6_addr, |
509 | IP6CB(skb)->iif); | 509 | inet6_iif(skb)); |
510 | *addr_len = sizeof(*sin6); | 510 | *addr_len = sizeof(*sin6); |
511 | } | 511 | } |
512 | 512 | ||
@@ -588,8 +588,7 @@ static int rawv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6, | |||
588 | } | 588 | } |
589 | 589 | ||
590 | offset += skb_transport_offset(skb); | 590 | offset += skb_transport_offset(skb); |
591 | if (skb_copy_bits(skb, offset, &csum, 2)) | 591 | BUG_ON(skb_copy_bits(skb, offset, &csum, 2)); |
592 | BUG(); | ||
593 | 592 | ||
594 | /* in case cksum was not initialized */ | 593 | /* in case cksum was not initialized */ |
595 | if (unlikely(csum)) | 594 | if (unlikely(csum)) |
@@ -601,8 +600,7 @@ static int rawv6_push_pending_frames(struct sock *sk, struct flowi6 *fl6, | |||
601 | if (csum == 0 && fl6->flowi6_proto == IPPROTO_UDP) | 600 | if (csum == 0 && fl6->flowi6_proto == IPPROTO_UDP) |
602 | csum = CSUM_MANGLED_0; | 601 | csum = CSUM_MANGLED_0; |
603 | 602 | ||
604 | if (skb_store_bits(skb, offset, &csum, 2)) | 603 | BUG_ON(skb_store_bits(skb, offset, &csum, 2)); |
605 | BUG(); | ||
606 | 604 | ||
607 | send: | 605 | send: |
608 | err = ip6_push_pending_frames(sk); | 606 | err = ip6_push_pending_frames(sk); |