diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/core/skbuff.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 880722e22cc..ccbabf56573 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -682,11 +682,14 @@ static void __copy_skb_header(struct sk_buff *new, const struct sk_buff *old) | |||
682 | new->transport_header = old->transport_header; | 682 | new->transport_header = old->transport_header; |
683 | new->network_header = old->network_header; | 683 | new->network_header = old->network_header; |
684 | new->mac_header = old->mac_header; | 684 | new->mac_header = old->mac_header; |
685 | new->inner_transport_header = old->inner_transport_header; | ||
686 | new->inner_network_header = old->inner_transport_header; | ||
685 | skb_dst_copy(new, old); | 687 | skb_dst_copy(new, old); |
686 | new->rxhash = old->rxhash; | 688 | new->rxhash = old->rxhash; |
687 | new->ooo_okay = old->ooo_okay; | 689 | new->ooo_okay = old->ooo_okay; |
688 | new->l4_rxhash = old->l4_rxhash; | 690 | new->l4_rxhash = old->l4_rxhash; |
689 | new->no_fcs = old->no_fcs; | 691 | new->no_fcs = old->no_fcs; |
692 | new->encapsulation = old->encapsulation; | ||
690 | #ifdef CONFIG_XFRM | 693 | #ifdef CONFIG_XFRM |
691 | new->sp = secpath_get(old->sp); | 694 | new->sp = secpath_get(old->sp); |
692 | #endif | 695 | #endif |
@@ -892,6 +895,8 @@ static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old) | |||
892 | new->network_header += offset; | 895 | new->network_header += offset; |
893 | if (skb_mac_header_was_set(new)) | 896 | if (skb_mac_header_was_set(new)) |
894 | new->mac_header += offset; | 897 | new->mac_header += offset; |
898 | new->inner_transport_header += offset; | ||
899 | new->inner_network_header += offset; | ||
895 | #endif | 900 | #endif |
896 | skb_shinfo(new)->gso_size = skb_shinfo(old)->gso_size; | 901 | skb_shinfo(new)->gso_size = skb_shinfo(old)->gso_size; |
897 | skb_shinfo(new)->gso_segs = skb_shinfo(old)->gso_segs; | 902 | skb_shinfo(new)->gso_segs = skb_shinfo(old)->gso_segs; |
@@ -1089,6 +1094,8 @@ int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail, | |||
1089 | skb->network_header += off; | 1094 | skb->network_header += off; |
1090 | if (skb_mac_header_was_set(skb)) | 1095 | if (skb_mac_header_was_set(skb)) |
1091 | skb->mac_header += off; | 1096 | skb->mac_header += off; |
1097 | skb->inner_transport_header += off; | ||
1098 | skb->inner_network_header += off; | ||
1092 | /* Only adjust this if it actually is csum_start rather than csum */ | 1099 | /* Only adjust this if it actually is csum_start rather than csum */ |
1093 | if (skb->ip_summed == CHECKSUM_PARTIAL) | 1100 | if (skb->ip_summed == CHECKSUM_PARTIAL) |
1094 | skb->csum_start += nhead; | 1101 | skb->csum_start += nhead; |
@@ -1188,6 +1195,8 @@ struct sk_buff *skb_copy_expand(const struct sk_buff *skb, | |||
1188 | n->network_header += off; | 1195 | n->network_header += off; |
1189 | if (skb_mac_header_was_set(skb)) | 1196 | if (skb_mac_header_was_set(skb)) |
1190 | n->mac_header += off; | 1197 | n->mac_header += off; |
1198 | n->inner_transport_header += off; | ||
1199 | n->inner_network_header += off; | ||
1191 | #endif | 1200 | #endif |
1192 | 1201 | ||
1193 | return n; | 1202 | return n; |