tcp/dccp: add a reschedule point in inet_csk_listen_stop()
authorEric Dumazet <edumazet@google.com>
Fri, 2 Oct 2015 18:43:38 +0000 (11:43 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 3 Oct 2015 11:32:45 +0000 (04:32 -0700)
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>
net/ipv4/inet_connection_sock.c

index 5f6e31a4aeaeda2c2c479a3b43ddc497fb459e6f..89eedfbd4ad53388fc22ddc6ba6720ce93bad9ab 100644 (file)
@@ -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. */