diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-04-20 22:25:37 (GMT) |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-04-20 22:25:37 (GMT) |
commit | d3d3cf05eda861d807de539cac25bcefee0f9659 (patch) | |
tree | 8ea562077369b97700ebe6af02906690a788bf51 /net/ipv4 | |
parent | a6db522c9399f69ff705c8afae069b5a74a8ea6b (diff) | |
parent | 18bc89aa25fbfcf467f4ce67f76c7b9893404cac (diff) | |
download | linux-fsl-qoriq-d3d3cf05eda861d807de539cac25bcefee0f9659.tar.xz |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6:
[EBTABLES]: Clean up vmalloc usage in net/bridge/netfilter/ebtables.c
[NET]: Add skb->truesize assertion checking.
[TCP]: Account skb overhead in tcp_fragment
[SUNGEM]: Marvell PHY suspend.
[LLC]: Use pskb_trim_rcsum() in llc_fixup_skb().
[NET]: sockfd_lookup_light() returns random error for -EBADFD
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/tcp_output.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index 44df1db..a28ae59 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -533,6 +533,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss struct tcp_sock *tp = tcp_sk(sk); struct sk_buff *buff; int nsize, old_factor; + int nlen; u16 flags; BUG_ON(len > skb->len); @@ -552,8 +553,10 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss if (buff == NULL) return -ENOMEM; /* We'll just try again later. */ - buff->truesize = skb->len - len; - skb->truesize -= buff->truesize; + sk_charge_skb(sk, buff); + nlen = skb->len - len - nsize; + buff->truesize += nlen; + skb->truesize -= nlen; /* Correct the sequence numbers. */ TCP_SKB_CB(buff)->seq = TCP_SKB_CB(skb)->seq + len; @@ -1039,7 +1042,8 @@ static int tso_fragment(struct sock *sk, struct sk_buff *skb, unsigned int len, if (unlikely(buff == NULL)) return -ENOMEM; - buff->truesize = nlen; + sk_charge_skb(sk, buff); + buff->truesize += nlen; skb->truesize -= nlen; /* Correct the sequence numbers. */ |