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

Eric Wong
2013-01-09T08:42:50Z

Eric Wong <normalperson@yhbt.net> wrote:
> Eric Dumazet <erdnetdev@gmail.com> 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...