[TCP] Allow len == skb->len in tcp_fragment
authorHerbert Xu <herbert@gondor.apana.org.au>
Thu, 20 Oct 2005 19:13:13 +0000 (17:13 -0200)
committerArnaldo Carvalho de Melo <acme@mandriva.com>
Thu, 20 Oct 2005 19:13:13 +0000 (17:13 -0200)
It is legitimate to call tcp_fragment with len == skb->len since
that is done for FIN packets and the FIN flag counts as one byte.
So we should only check for the len > skb->len case.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Arnaldo Carvalho de Melo <acme@mandriva.com>
net/ipv4/tcp_output.c

index 7114031..b907456 100644 (file)
@@ -435,17 +435,7 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss
        int nsize, old_factor;
        u16 flags;
 
-       if (unlikely(len >= skb->len)) {
-               if (net_ratelimit()) {
-                       printk(KERN_DEBUG "TCP: seg_size=%u, mss=%u, seq=%u, "
-                              "end_seq=%u, skb->len=%u.\n", len, mss_now,
-                              TCP_SKB_CB(skb)->seq, TCP_SKB_CB(skb)->end_seq,
-                              skb->len);
-                       WARN_ON(1);
-               }
-               return 0;
-       }
-
+       BUG_ON(len > skb->len);
        nsize = skb_headlen(skb) - len;
        if (nsize < 0)
                nsize = 0;