diff -urpN --exclude-from=/home/davej/.exclude bk-linus/net/ipv4/tcp.c linux-2.5/net/ipv4/tcp.c
--- bk-linus/net/ipv4/tcp.c	2002-11-21 02:25:02.000000000 +0000
+++ linux-2.5/net/ipv4/tcp.c	2002-11-21 18:05:35.000000000 +0000
@@ -1190,7 +1190,8 @@ new_segment:
 
 			from += copy;
 			copied += copy;
-			seglen -= copy;
+			if ((seglen -= copy) == 0 && iovlen == 0)
+				goto out;
 
 			if (skb->len != mss_now || (flags & MSG_OOB))
 				continue;