From 3b5c08b122c022d0ff2f0a9855d0fcaa9f721fa4 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Wed, 19 Apr 2006 21:35:00 -0700 Subject: [PATCH] --- yaml --- r: 26073 b: refs/heads/master c: b60b49ea6a3e1f8dcaf4148dad0daab61ab766d2 h: refs/heads/master i: 26071: 6018030c965a5884c56978bd1256d1aeab36c2cb v: v3 --- [refs] | 2 +- trunk/net/ipv4/tcp_output.c | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index a679edf3a437..2644145b79f2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d47f3640fe2ac4da8a8e713a549e6eaf23ac2084 +refs/heads/master: b60b49ea6a3e1f8dcaf4148dad0daab61ab766d2 diff --git a/trunk/net/ipv4/tcp_output.c b/trunk/net/ipv4/tcp_output.c index 44df1db726a3..a28ae593b976 100644 --- a/trunk/net/ipv4/tcp_output.c +++ b/trunk/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. */