Re: ppoll() stuck on POLLIN while TCP peer is sending

From: Eric Wong
Date: Wed Jan 09 2013 - 03:42:35 EST


Eric Wong <normalperson@xxxxxxxx> wrote:
> Eric Dumazet <erdnetdev@xxxxxxxxx> wrote:
> > On Tue, 2013-01-08 at 18:32 -0800, Eric Dumazet wrote:
> > > Hmm, it seems sk_filter() can return -ENOMEM because skb has the
> > > pfmemalloc() set.
> >
> > >
> > > One TCP socket keeps retransmitting an SKB via loopback, and TCP stack
> > > drops the packet again and again.
> >
> > sock_init_data() sets sk->sk_allocation to GFP_KERNEL
> >
> > Shouldnt it use (GFP_KERNEL | __GFP_NOMEMALLOC) instead ?
>
> Thanks, things are running good after ~35 minutes so far.
> Will report back if things break (hopefully I don't run out
> of laptop battery power :x).

Oops, I had to restart my test :x. However, I was able to reproduce the
issue very quickly again with your patch. I've double-checked I'm
booting into the correct kernel, but I do have more load on this
laptop host now, so maybe that made it happen more quickly...
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/