]> 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)
commit54c69afcdbb22baedc3329e4d84bd4ec297523ee
treedc700c270ee5120019b430d2a0d97f8a9c728c03
parent35cf0364cba96add38748844d6ef64e9b598326c
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 31c8bafa134b ("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