The following commit has been merged in the linux branch: commit b6b39e8f3fbbb31001b836afec87bcaf4811a7bf Author: Herbert Xu herbert@gondor.apana.org.au Date: Mon Oct 19 19:41:06 2009 +0000
tcp: Try to catch MSG_PEEK bug
This patch tries to print out more information when we hit the MSG_PEEK bug in tcp_recvmsg. It's been around since at least 2005 and it's about time that we finally fix it.
Signed-off-by: Herbert Xu herbert@gondor.apana.org.au Signed-off-by: David S. Miller davem@davemloft.net
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 9b2756f..90b2e06 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -1442,7 +1442,9 @@ int tcp_recvmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *msg, goto found_ok_skb; if (tcp_hdr(skb)->fin) goto found_fin_ok; - WARN_ON(!(flags & MSG_PEEK)); + if (WARN_ON(!(flags & MSG_PEEK))) + printk(KERN_INFO "recvmsg bug 2: copied %X " + "seq %X\n", *seq, TCP_SKB_CB(skb)->seq); }
/* Well, if we have backlog, try to process it now yet. */