Browse Source

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>
Eric Dumazet 9 years ago
parent
commit
92d6f176fd
1 changed files with 1 additions and 0 deletions
  1. 1 0
      net/ipv4/inet_connection_sock.c

+ 1 - 0
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. */