--- 2.2.15pre4/net/ipv4/tcp_output.c.~1~ Tue Jan 25 15:40:06 2000 +++ 2.2.15pre4/net/ipv4/tcp_output.c Fri Jan 28 10:27:13 2000 @@ -753,12 +753,16 @@ } } else { /* Socket is locked, keep trying until memory is available. */ - do { + for (;;) { skb = sock_wmalloc(sk, (MAX_HEADER + sk->prot->max_header), 1, GFP_KERNEL); - } while (skb == NULL); + if (skb) + break; + current->policy |= SCHED_YIELD; + schedule(); + } /* Reserve space for headers and prepare control bits. */ skb_reserve(skb, MAX_HEADER + sk->prot->max_header);