]> git.baikalelectronics.ru Git - kernel.git/commit
tcp: fix behavior for epoll edge trigger
authorEric Dumazet <edumazet@google.com>
Fri, 15 May 2015 19:39:28 +0000 (12:39 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 18 May 2015 02:45:48 +0000 (22:45 -0400)
commita0229dae4d7a1c326fa837dcaa4b088455faead7
treedc700c270ee5120019b430d2a0d97f8a9c728c03
parent7e86b8be0767624e30437ff348a45800736cd8a3
tcp: fix behavior for epoll edge trigger

Under memory pressure, tcp_sendmsg() can fail to queue a packet
while no packet is present in write queue. If we return -EAGAIN
with no packet in write queue, no ACK packet will ever come
to raise EPOLLOUT.

We need to allow one skb per TCP socket, and make sure that
tcp sockets can release their forward allocations under pressure.

This is a followup to commit 3aa70b301daf ("tcp: set SOCK_NOSPACE
under memory pressure")

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv4/tcp.c