Messages in this thread |  | | | Date | Wed, 4 Jun 2008 09:42:58 +0300 (EEST) | | From | "Ilpo Järvinen" <> | | Subject | Re: [fixed] [patch] Re: [bug] stuck localhost TCP connections, v2.6.26-rc3+ |
On Tue, 3 Jun 2008, Patrick McManus wrote:
> On Wed, 2008-06-04 at 02:22 +0300, Ilpo Järvinen wrote:
> ==
> > --
> > [PATCH] tcp DEFER_ACCEPT: fix racy access to listen_sk
> >
> > It seems that replacement of DA code also moved parts outside
> > of appropriate locking. The Ingo's problem seems to come from
> > the fact that two flows could now race in
> > (inet_csk_)reqsk_queue_add corrupting the queue. ...This can
> > leave dangling socks around which won't resolve themselves
> > without stimuli from outside (e.g., external RST would help
> > I think).
> do_rcv() clearly has the listening socket locked in the non-DA case, and
> in the DA case it is the 'child' ESTABLISHED socket that is locked -
> leaving the accept queue unprotected. So simple.
It also well explains why Ingo finally got the KERNEL: assertion
(!sk->sk_ack_backlog) which is adjusted in the very same reqsk_queue_add
making it and the actual queue come out of sync.
...too bad this has no relevance to Håkon's case, so more digging
is necessary... :-)
--
i. |  |