diff options
author | Paolo Abeni <pabeni@redhat.com> | 2020-01-21 18:50:49 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-01-29 18:43:17 +0300 |
commit | 4c1c35c01531cda945cd1e0ae994a6c91c88de81 (patch) | |
tree | 375f22cc8de81144cbc41978988a469496d525c7 /net | |
parent | c74b3d128d57df60bd3ff746bf3f2025597b2d90 (diff) | |
download | linux-4c1c35c01531cda945cd1e0ae994a6c91c88de81.tar.xz |
Revert "udp: do rmem bulk free even if the rx sk queue is empty"
[ Upstream commit d39ca2590d10712f412add7a88e1dd467a7246f4 ]
This reverts commit 0d4a6608f68c7532dcbfec2ea1150c9761767d03.
Willem reported that after commit 0d4a6608f68c ("udp: do rmem bulk
free even if the rx sk queue is empty") the memory allocated by
an almost idle system with many UDP sockets can grow a lot.
For stable kernel keep the solution as simple as possible and revert
the offending commit.
Reported-by: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Diagnosed-by: Eric Dumazet <eric.dumazet@gmail.com>
Fixes: 0d4a6608f68c ("udp: do rmem bulk free even if the rx sk queue is empty")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/udp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index 2eeae0455b14..0ef04cda1b27 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -1305,7 +1305,8 @@ static void udp_rmem_release(struct sock *sk, int size, int partial, if (likely(partial)) { up->forward_deficit += size; size = up->forward_deficit; - if (size < (sk->sk_rcvbuf >> 2)) + if (size < (sk->sk_rcvbuf >> 2) && + !skb_queue_empty(&up->reader_queue)) return; } else { size += up->forward_deficit; |