aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/skbuff.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-09-10 01:27:33 -0400
committerDavid S. Miller <davem@davemloft.net>2010-09-10 01:27:33 -0400
commite548833df83c3554229eff0672900bfe958b45fd (patch)
tree85efc4a76dc356593d6d394776aeb845dc580fb6 /net/core/skbuff.c
parentcbd9da7be869f676afc204e1a664163778c770bd (diff)
parent053d8f6622701f849fda2ca2c9ae596c13599ba9 (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: net/mac80211/main.c
Diffstat (limited to 'net/core/skbuff.c')
-rw-r--r--net/core/skbuff.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 2d1bc761fe4b..752c1972b3a7 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -2569,6 +2569,10 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
2569 __copy_skb_header(nskb, skb); 2569 __copy_skb_header(nskb, skb);
2570 nskb->mac_len = skb->mac_len; 2570 nskb->mac_len = skb->mac_len;
2571 2571
2572 /* nskb and skb might have different headroom */
2573 if (nskb->ip_summed == CHECKSUM_PARTIAL)
2574 nskb->csum_start += skb_headroom(nskb) - headroom;
2575
2572 skb_reset_mac_header(nskb); 2576 skb_reset_mac_header(nskb);
2573 skb_set_network_header(nskb, skb->mac_len); 2577 skb_set_network_header(nskb, skb->mac_len);
2574 nskb->transport_header = (nskb->network_header + 2578 nskb->transport_header = (nskb->network_header +
@@ -2699,7 +2703,7 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb)
2699 return -E2BIG; 2703 return -E2BIG;
2700 2704
2701 headroom = skb_headroom(p); 2705 headroom = skb_headroom(p);
2702 nskb = netdev_alloc_skb(p->dev, headroom + skb_gro_offset(p)); 2706 nskb = alloc_skb(headroom + skb_gro_offset(p), GFP_ATOMIC);
2703 if (unlikely(!nskb)) 2707 if (unlikely(!nskb))
2704 return -ENOMEM; 2708 return -ENOMEM;
2705 2709