diff options
author | Eric Dumazet <edumazet@google.com> | 2015-10-02 20:43:38 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-03 13:32:45 +0200 |
commit | 92d6f176fdcce1a9c22a59d754c924168fdf2ce4 (patch) | |
tree | 79787c724f3b6cf10af328ff62d577557a9b4b53 /net/ipv4/inet_connection_sock.c | |
parent | tcp: remove max_qlen_log (diff) | |
download | linux-92d6f176fdcce1a9c22a59d754c924168fdf2ce4.tar.xz linux-92d6f176fdcce1a9c22a59d754c924168fdf2ce4.zip |
tcp/dccp: add a reschedule point in inet_csk_listen_stop()
If a listener with thousands of children in accept queue
is dismantled, it can take a while to close all of them.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/inet_connection_sock.c')
-rw-r--r-- | net/ipv4/inet_connection_sock.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv4/inet_connection_sock.c b/net/ipv4/inet_connection_sock.c index 5f6e31a4aeae..89eedfbd4ad5 100644 --- a/net/ipv4/inet_connection_sock.c +++ b/net/ipv4/inet_connection_sock.c @@ -809,6 +809,7 @@ void inet_csk_listen_stop(struct sock *sk) sock_put(child); reqsk_put(req); + cond_resched(); } if (queue->fastopenq.rskq_rst_head) { /* Free all the reqs queued in rskq_rst_head. */ |