aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4')
-rw-r--r--net/ipv4/tcp_input.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index fb0256085948..e5d1c2c8cea7 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -3632,11 +3632,13 @@ tcp_collapse(struct sock *sk, struct sk_buff_head *list,
3632 nskb = alloc_skb(copy+header, GFP_ATOMIC); 3632 nskb = alloc_skb(copy+header, GFP_ATOMIC);
3633 if (!nskb) 3633 if (!nskb)
3634 return; 3634 return;
3635
3636 nskb->mac.raw = nskb->data + (skb->mac.raw - skb->head);
3637 nskb->nh.raw = nskb->data + (skb->nh.raw - skb->head);
3638 nskb->h.raw = nskb->data + (skb->h.raw - skb->head);
3639
3635 skb_reserve(nskb, header); 3640 skb_reserve(nskb, header);
3636 memcpy(nskb->head, skb->head, header); 3641 memcpy(nskb->head, skb->head, header);
3637 nskb->nh.raw = nskb->head + (skb->nh.raw-skb->head);
3638 nskb->h.raw = nskb->head + (skb->h.raw-skb->head);
3639 nskb->mac.raw = nskb->head + (skb->mac.raw-skb->head);
3640 memcpy(nskb->cb, skb->cb, sizeof(skb->cb)); 3642 memcpy(nskb->cb, skb->cb, sizeof(skb->cb));
3641 TCP_SKB_CB(nskb)->seq = TCP_SKB_CB(nskb)->end_seq = start; 3643 TCP_SKB_CB(nskb)->seq = TCP_SKB_CB(nskb)->end_seq = start;
3642 __skb_insert(nskb, skb->prev, skb, list); 3644 __skb_insert(nskb, skb->prev, skb, list);