]> Pileus Git - ~andy/linux/blobdiff - net/core/skbuff.c
net: fix possible wrong checksum generation
[~andy/linux] / net / core / skbuff.c
index 2568c449fe36cb488269986402c31915d00ac647..bddc1dd2e7f221331136aec6e4b6efebdf4feb2c 100644 (file)
@@ -2340,6 +2340,8 @@ void skb_split(struct sk_buff *skb, struct sk_buff *skb1, const u32 len)
 {
        int pos = skb_headlen(skb);
 
+       skb_shinfo(skb1)->gso_type = skb_shinfo(skb)->gso_type;
+
        if (len < pos)  /* Split line is inside header. */
                skb_split_inside_header(skb, skb1, len, pos);
        else            /* Second chunk has no header, nothing to copy. */
@@ -2845,6 +2847,8 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
                skb_copy_from_linear_data_offset(skb, offset,
                                                 skb_put(nskb, hsize), hsize);
 
+               skb_shinfo(nskb)->gso_type = skb_shinfo(skb)->gso_type;
+
                while (pos < offset + len && i < nfrags) {
                        *frag = skb_shinfo(skb)->frags[i];
                        __skb_frag_ref(frag);