|
@@ -829,7 +829,7 @@ static void copy_skb_header(struct sk_buff *new, const struct sk_buff *old)
|
|
|
struct sk_buff *skb_copy(const struct sk_buff *skb, gfp_t gfp_mask)
|
|
|
{
|
|
|
int headerlen = skb_headroom(skb);
|
|
|
- unsigned int size = (skb_end_pointer(skb) - skb->head) + skb->data_len;
|
|
|
+ unsigned int size = skb_end_offset(skb) + skb->data_len;
|
|
|
struct sk_buff *n = alloc_skb(size, gfp_mask);
|
|
|
|
|
|
if (!n)
|
|
@@ -930,7 +930,7 @@ int pskb_expand_head(struct sk_buff *skb, int nhead, int ntail,
|
|
|
{
|
|
|
int i;
|
|
|
u8 *data;
|
|
|
- int size = nhead + (skb_end_pointer(skb) - skb->head) + ntail;
|
|
|
+ int size = nhead + skb_end_offset(skb) + ntail;
|
|
|
long off;
|
|
|
|
|
|
BUG_ON(nhead < 0);
|
|
@@ -2727,14 +2727,13 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
|
|
|
if (unlikely(!nskb))
|
|
|
goto err;
|
|
|
|
|
|
- hsize = skb_end_pointer(nskb) - nskb->head;
|
|
|
+ hsize = skb_end_offset(nskb);
|
|
|
if (skb_cow_head(nskb, doffset + headroom)) {
|
|
|
kfree_skb(nskb);
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
- nskb->truesize += skb_end_pointer(nskb) - nskb->head -
|
|
|
- hsize;
|
|
|
+ nskb->truesize += skb_end_offset(nskb) - hsize;
|
|
|
skb_release_head_state(nskb);
|
|
|
__skb_push(nskb, doffset);
|
|
|
} else {
|
|
@@ -2883,7 +2882,8 @@ int skb_gro_receive(struct sk_buff **head, struct sk_buff *skb)
|
|
|
skb_frag_size_sub(frag, offset);
|
|
|
|
|
|
/* all fragments truesize : remove (head size + sk_buff) */
|
|
|
- delta_truesize = skb->truesize - SKB_TRUESIZE(skb_end_pointer(skb) - skb->head);
|
|
|
+ delta_truesize = skb->truesize -
|
|
|
+ SKB_TRUESIZE(skb_end_offset(skb));
|
|
|
|
|
|
skb->truesize -= skb->data_len;
|
|
|
skb->len -= skb->data_len;
|