Thread (5 messages) 5 messages, 4 authors, 2014-01-22

Re: [PATCH 1/1] Per socket value for max datagram queue length

From: Hannes Frederic Sowa <hidden>
Date: 2014-01-22 15:32:55
Also in: linux-arch, lkml

On Wed, Jan 22, 2014 at 04:20:36PM +0100, Hannes Frederic Sowa wrote:
On Wed, Jan 22, 2014 at 07:11:20AM -0800, Dan Ballard wrote:
quoted
diff --git a/net/core/sock.c b/net/core/sock.c
index 5393b4b..1ff69d1 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -915,6 +915,10 @@ set_rcvbuf:
                                         sk->sk_max_pacing_rate);
                break;

+       case SO_MAX_DGRAM_QLEN:
+               sk->sk_max_ack_backlog = val;
+               break;
+
Shouldn't the backlog be capped for unprivileged users to some configurable
value? I even think that max_dgram_qlen should be the upper bound.

I guess it is not that serious as socket read accounting does account all
packets which sit in the backlog queue.
Just a follow-up:

sk_max_ack_backlog is also responsible for limiting the af_unix
dgram queues.  Currently there is no socket accounting for the read
side of those unix dgram sockets. I tried to fix this once here,
http://patchwork.ozlabs.org/patch/231032/, but until that is done we
depend on max_dgram_qlen to limit those queues at all.

I hope I can get back to this patch anytime soon, as it solves the problem
that a bidirectional protocol ping-ponging with a dgram server socket
and not fetching its messages from the backlog queue can bring a server
to halt because it doesn't have any send space on the socket anymore.

Greetings,

  Hannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help