diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/skbuff.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 678ae4e783aa..fd3646209b65 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -840,8 +840,9 @@ struct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t gfp_mask) | |||
840 | EXPORT_SYMBOL(skb_copy); | 840 | EXPORT_SYMBOL(skb_copy); |
841 | 841 | ||
842 | /** | 842 | /** |
843 | * pskb_copy - create copy of an sk_buff with private head. | 843 | * __pskb_copy - create copy of an sk_buff with private head. |
844 | * @skb: buffer to copy | 844 | * @skb: buffer to copy |
845 | * @headroom: headroom of new skb | ||
845 | * @gfp_mask: allocation priority | 846 | * @gfp_mask: allocation priority |
846 | * | 847 | * |
847 | * Make a copy of both an &sk_buff and part of its data, located | 848 | * Make a copy of both an &sk_buff and part of its data, located |
@@ -852,16 +853,16 @@ EXPORT_SYMBOL(skb_copy); | |||
852 | * The returned buffer has a reference count of 1. | 853 | * The returned buffer has a reference count of 1. |
853 | */ | 854 | */ |
854 | 855 | ||
855 | struct sk_buff *pskb_copy(struct sk_buff *skb, gfp_t gfp_mask) | 856 | struct sk_buff *__pskb_copy(struct sk_buff *skb, int headroom, gfp_t gfp_mask) |
856 | { | 857 | { |
857 | unsigned int size = skb_end_pointer(skb) - skb->head; | 858 | unsigned int size = skb_headlen(skb) + headroom; |
858 | struct sk_buff *n = alloc_skb(size, gfp_mask); | 859 | struct sk_buff *n = alloc_skb(size, gfp_mask); |
859 | 860 | ||
860 | if (!n) | 861 | if (!n) |
861 | goto out; | 862 | goto out; |
862 | 863 | ||
863 | /* Set the data pointer */ | 864 | /* Set the data pointer */ |
864 | skb_reserve(n, skb_headroom(skb)); | 865 | skb_reserve(n, headroom); |
865 | /* Set the tail pointer and length */ | 866 | /* Set the tail pointer and length */ |
866 | skb_put(n, skb_headlen(skb)); | 867 | skb_put(n, skb_headlen(skb)); |
867 | /* Copy the bytes */ | 868 | /* Copy the bytes */ |
@@ -897,7 +898,7 @@ struct sk_buff *pskb_copy(struct sk_buff *skb, gfp_t gfp_mask) | |||
897 | out: | 898 | out: |
898 | return n; | 899 | return n; |
899 | } | 900 | } |
900 | EXPORT_SYMBOL(pskb_copy); | 901 | EXPORT_SYMBOL(__pskb_copy); |
901 | 902 | ||
902 | /** | 903 | /** |
903 | * pskb_expand_head - reallocate header of &sk_buff | 904 | * pskb_expand_head - reallocate header of &sk_buff |