]> err.no Git - linux-2.6/commitdiff
[TCP]: Add code to help track down "BUG at net/ipv4/tcp_output.c:438!"
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 12 Oct 2005 22:59:39 +0000 (15:59 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 12 Oct 2005 22:59:39 +0000 (15:59 -0700)
This is the second report of this bug.  Unfortunately the first
reporter hasn't been able to reproduce it since to provide more
debugging info.

So let's apply this patch for 2.6.14 to

1) Make this non-fatal.
2) Provide the info we need to track it down.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp_output.c

index 8225e4257258a13b5697c255290e5741dc642f0f..f37a50e55b6846eca00732da90c53aa7eeff2401 100644 (file)
@@ -435,7 +435,14 @@ int tcp_fragment(struct sock *sk, struct sk_buff *skb, u32 len, unsigned int mss
        int nsize, old_factor;
        u16 flags;
 
-       BUG_ON(len >= skb->len);
+       if (unlikely(len >= skb->len)) {
+               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;
+       }
 
        nsize = skb_headlen(skb) - len;
        if (nsize < 0)