aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/raw.c
diff options
context:
space:
mode:
authorJames Morris <james.l.morris@oracle.com>2014-11-19 05:32:12 -0500
committerJames Morris <james.l.morris@oracle.com>2014-11-19 05:32:12 -0500
commitb10778a00d40b3d9fdaaf5891e802794781ff71c (patch)
tree6ba4cbac86eecedc3f30650e7f764ecf00c83898 /net/ipv6/raw.c
parent594081ee7145cc30a3977cb4e218f81213b63dc5 (diff)
parentbfe01a5ba2490f299e1d2d5508cbbbadd897bbe9 (diff)
Merge commit 'v3.17' into next
Diffstat (limited to 'net/ipv6/raw.c')
-rw-r--r--net/ipv6/raw.c14
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 }
225out: 225out:
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
607send: 605send:
608 err = ip6_push_pending_frames(sk); 606 err = ip6_push_pending_frames(sk);