Messages in this thread Patch in this message | | | Date | Fri, 13 Jun 2008 13:09:13 +0200 | From | Ingo Molnar <> | Subject | Re: [TCP]: TCP_DEFER_ACCEPT causes leak sockets |
| |
* David Miller <davem@davemloft.net> wrote:
> From: Ingo Molnar <mingo@elte.hu> > Date: Fri, 13 Jun 2008 08:30:37 +0200 > > > the 3 reverts have been extensively tested in -tip via: > > > > # tip/out-of-tree: 9e5b6ca: tcp: revert DEFER_ACCEPT modifications > > > > and the distcc problems are fixed. (The locking fix alone did not fix it > > conclusively in my testing, possibly due to the follow-on observations > > outlined in your description.) > > > > Tested-by: Ingo Molnar <mingo@elte.hu> > > I didn't revert all three changes, just the final part of that 3 part > series. > > Please test the patch I actually applied.
i just updated all my testsystems to revert the change i tested so far, and updated it to yours. The delta between the two is the 3 lines patch below.
A few testsystems already booted into your patch, so if i dont report a hung TCP connection in the next 6 hours consider it:
Tested-by: Ingo Molnar <mingo@elte.hu>
Ingo
---------------> diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c index ec83448..045e799 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c @@ -466,9 +466,9 @@ void inet_csk_reqsk_queue_prune(struct sock *parent, reqp=&lopt->syn_table[i]; while ((req = *reqp) != NULL) { if (time_after_eq(now, req->expires)) { - if ((req->retrans < thresh || - (inet_rsk(req)->acked && req->retrans < max_retries)) - && !req->rsk_ops->rtx_syn_ack(parent, req)) { + if ((req->retrans < (inet_rsk(req)->acked ? max_retries : thresh)) && + (inet_rsk(req)->acked || + !req->rsk_ops->rtx_syn_ack(parent, req))) { unsigned long timeo; if (req->retrans++ == 0)
| |