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

Reply via email to