aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/dev.c')
-rw-r--r--net/core/dev.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 1b0758254ba0..54ffe9db9b02 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -1068,8 +1068,8 @@ static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev)
1068 */ 1068 */
1069 skb_reset_mac_header(skb2); 1069 skb_reset_mac_header(skb2);
1070 1070
1071 if (skb2->nh.raw < skb2->data || 1071 if (skb_network_header(skb2) < skb2->data ||
1072 skb2->nh.raw > skb2->tail) { 1072 skb_network_header(skb2) > skb2->tail) {
1073 if (net_ratelimit()) 1073 if (net_ratelimit())
1074 printk(KERN_CRIT "protocol %04x is " 1074 printk(KERN_CRIT "protocol %04x is "
1075 "buggy, dev %s\n", 1075 "buggy, dev %s\n",
@@ -1207,7 +1207,7 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features)
1207 BUG_ON(skb_shinfo(skb)->frag_list); 1207 BUG_ON(skb_shinfo(skb)->frag_list);
1208 1208
1209 skb_reset_mac_header(skb); 1209 skb_reset_mac_header(skb);
1210 skb->mac_len = skb->nh.raw - skb->data; 1210 skb->mac_len = skb->nh.raw - skb->mac.raw;
1211 __skb_pull(skb, skb->mac_len); 1211 __skb_pull(skb, skb->mac_len);
1212 1212
1213 if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) { 1213 if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) {
@@ -1224,7 +1224,8 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features)
1224 segs = ERR_PTR(err); 1224 segs = ERR_PTR(err);
1225 if (err || skb_gso_ok(skb, features)) 1225 if (err || skb_gso_ok(skb, features))
1226 break; 1226 break;
1227 __skb_push(skb, skb->data - skb->nh.raw); 1227 __skb_push(skb, (skb->data -
1228 skb_network_header(skb)));
1228 } 1229 }
1229 segs = ptype->gso_segment(skb, features); 1230 segs = ptype->gso_segment(skb, features);
1230 break; 1231 break;