On Mon, Aug 26, 2019 at 12:19 PM Eric Dumazet <[email protected]> wrote: > > Vladimir Rutsky reported stuck TCP sessions after memory pressure > events. Edge Trigger epoll() user would never receive an EPOLLOUT > notification allowing them to retry a sendmsg(). > > Jason tested the case of sk_stream_alloc_skb() returning NULL, > but there are other paths that could lead both sendmsg() and sendpage() > to return -1 (EAGAIN), with an empty skb queued on the write queue. > > This patch makes sure we remove this empty skb so that > Jason code can detect that the queue is empty, and > call sk->sk_write_space(sk) accordingly. > > Fixes: ce5ec440994b ("tcp: ensure epoll edge trigger wakeup when write queue > is empty") > Signed-off-by: Eric Dumazet <[email protected]> > Cc: Jason Baron <[email protected]> > Reported-by: Vladimir Rutsky <[email protected]> > Cc: Soheil Hassas Yeganeh <[email protected]> > Cc: Neal Cardwell <[email protected]> > ---
Acked-by: Neal Cardwell <[email protected]> Nice detective work. :-) Thanks, Eric! neal
