aboutsummaryrefslogtreecommitdiffstats
path: root/net/core/skbuff.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/core/skbuff.c')
-rw-r--r--net/core/skbuff.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 3c23760c5827..b8b106358040 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -639,6 +639,7 @@ struct sk_buff *pskb_copy(struct sk_buff *skb, gfp_t gfp_mask)
639 n->csum = skb->csum; 639 n->csum = skb->csum;
640 n->ip_summed = skb->ip_summed; 640 n->ip_summed = skb->ip_summed;
641 641
642 n->truesize += skb->data_len;
642 n->data_len = skb->data_len; 643 n->data_len = skb->data_len;
643 n->len = skb->len; 644 n->len = skb->len;
644 645
@@ -1946,7 +1947,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
1946 do { 1947 do {
1947 struct sk_buff *nskb; 1948 struct sk_buff *nskb;
1948 skb_frag_t *frag; 1949 skb_frag_t *frag;
1949 int hsize, nsize; 1950 int hsize;
1950 int k; 1951 int k;
1951 int size; 1952 int size;
1952 1953
@@ -1957,11 +1958,10 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
1957 hsize = skb_headlen(skb) - offset; 1958 hsize = skb_headlen(skb) - offset;
1958 if (hsize < 0) 1959 if (hsize < 0)
1959 hsize = 0; 1960 hsize = 0;
1960 nsize = hsize + doffset; 1961 if (hsize > len || !sg)
1961 if (nsize > len + doffset || !sg) 1962 hsize = len;
1962 nsize = len + doffset;
1963 1963
1964 nskb = alloc_skb(nsize + headroom, GFP_ATOMIC); 1964 nskb = alloc_skb(hsize + doffset + headroom, GFP_ATOMIC);
1965 if (unlikely(!nskb)) 1965 if (unlikely(!nskb))
1966 goto err; 1966 goto err;
1967 1967