diff options
Diffstat (limited to 'net/ipv6/ip6_output.c')
-rw-r--r-- | net/ipv6/ip6_output.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c index 8a7b5c760147..47d00210cba1 100644 --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c | |||
@@ -89,7 +89,7 @@ static inline int ip6_output_finish(struct sk_buff *skb) | |||
89 | static int ip6_dev_loopback_xmit(struct sk_buff *newskb) | 89 | static int ip6_dev_loopback_xmit(struct sk_buff *newskb) |
90 | { | 90 | { |
91 | skb_reset_mac_header(newskb); | 91 | skb_reset_mac_header(newskb); |
92 | __skb_pull(newskb, newskb->nh.raw - newskb->data); | 92 | __skb_pull(newskb, skb_network_offset(newskb)); |
93 | newskb->pkt_type = PACKET_LOOPBACK; | 93 | newskb->pkt_type = PACKET_LOOPBACK; |
94 | newskb->ip_summed = CHECKSUM_UNNECESSARY; | 94 | newskb->ip_summed = CHECKSUM_UNNECESSARY; |
95 | BUG_TRAP(newskb->dst); | 95 | BUG_TRAP(newskb->dst); |
@@ -1330,7 +1330,7 @@ int ip6_push_pending_frames(struct sock *sk) | |||
1330 | 1330 | ||
1331 | /* move skb->data to ip header from ext header */ | 1331 | /* move skb->data to ip header from ext header */ |
1332 | if (skb->data < skb->nh.raw) | 1332 | if (skb->data < skb->nh.raw) |
1333 | __skb_pull(skb, skb->nh.raw - skb->data); | 1333 | __skb_pull(skb, skb_network_offset(skb)); |
1334 | while ((tmp_skb = __skb_dequeue(&sk->sk_write_queue)) != NULL) { | 1334 | while ((tmp_skb = __skb_dequeue(&sk->sk_write_queue)) != NULL) { |
1335 | __skb_pull(tmp_skb, skb->h.raw - skb->nh.raw); | 1335 | __skb_pull(tmp_skb, skb->h.raw - skb->nh.raw); |
1336 | *tail_skb = tmp_skb; | 1336 | *tail_skb = tmp_skb; |