1.3.68 Socket destroy delayed

Bob Felderman (feldy@myri.com)
Fri, 23 Feb 96 11:20:49 PST


Just upgraded from 1.3.59 to 1.3.68. Netperf
used to work reasonably well under 1.3.59, now
it is broken and I get

"Socket destroy delayed"

printk from the kernel.

The code is in ipv4/af_inet.c

I don't have a fix or explanation. This happens when I connect
two 1.3.68 machines (pentium) or simply use netperf via
the loopback interface.

if (sk->rmem_alloc == 0 && sk->wmem_alloc == 0)
{
if(sk->opt)
kfree(sk->opt);
ip_rt_put(sk->ip_route_cache);
/*
* This one is pure paranoia. I'll take it out
* later once I know the bug is buried.
*/
tcp_cache_zap();
kfree_s((void *)sk,sizeof(*sk));
}
else
{
/* this should never happen. */
/* actually it can if an ack has just been sent. */
printk("Socket destroy delayed\n");
sk->destroy = 1;
sk->ack_backlog = 0;
release_sock(sk);
reset_timer(sk, TIME_DESTROY, SOCK_DESTROY_TIME);
}