void inet_twsk_deschedule_put(struct inet_timewait_sock *tw);
 
-void inet_twsk_purge(struct inet_hashinfo *hashinfo, int family);
+void inet_twsk_purge(struct inet_hashinfo *hashinfo);
 
 static inline
 struct net *twsk_net(const struct inet_timewait_sock *twsk)
 
 void tcp_rcv_space_adjust(struct sock *sk);
 int tcp_twsk_unique(struct sock *sk, struct sock *sktw, void *twp);
 void tcp_twsk_destructor(struct sock *sk);
-void tcp_twsk_purge(struct list_head *net_exit_list, int family);
+void tcp_twsk_purge(struct list_head *net_exit_list);
 ssize_t tcp_splice_read(struct socket *sk, loff_t *ppos,
                        struct pipe_inode_info *pipe, size_t len,
                        unsigned int flags);
 
 
 static void __net_exit dccp_v4_exit_batch(struct list_head *net_exit_list)
 {
-       inet_twsk_purge(&dccp_hashinfo, AF_INET);
+       inet_twsk_purge(&dccp_hashinfo);
 }
 
 static struct pernet_operations dccp_v4_ops = {
 
        inet_ctl_sock_destroy(pn->v6_ctl_sk);
 }
 
-static void __net_exit dccp_v6_exit_batch(struct list_head *net_exit_list)
-{
-       inet_twsk_purge(&dccp_hashinfo, AF_INET6);
-}
-
 static struct pernet_operations dccp_v6_ops = {
        .init   = dccp_v6_init_net,
        .exit   = dccp_v6_exit_net,
-       .exit_batch = dccp_v6_exit_batch,
        .id     = &dccp_v6_pernet_id,
        .size   = sizeof(struct dccp_v6_pernet),
 };
 
 EXPORT_SYMBOL_GPL(__inet_twsk_schedule);
 
 /* Remove all non full sockets (TIME_WAIT and NEW_SYN_RECV) for dead netns */
-void inet_twsk_purge(struct inet_hashinfo *hashinfo, int family)
+void inet_twsk_purge(struct inet_hashinfo *hashinfo)
 {
        struct inet_ehash_bucket *head = &hashinfo->ehash[0];
        unsigned int ehash_mask = hashinfo->ehash_mask;
        struct sock *sk;
 
        for (slot = 0; slot <= ehash_mask; slot++, head++) {
-
                if (hlist_nulls_empty(&head->chain))
                        continue;
 
                                             TCPF_NEW_SYN_RECV))
                                continue;
 
-                       if (sk->sk_family != family ||
-                           refcount_read(&sock_net(sk)->ns.count))
+                       if (refcount_read(&sock_net(sk)->ns.count))
                                continue;
 
                        if (unlikely(!refcount_inc_not_zero(&sk->sk_refcnt)))
                                continue;
 
-                       if (unlikely(sk->sk_family != family ||
-                                    refcount_read(&sock_net(sk)->ns.count))) {
+                       if (refcount_read(&sock_net(sk)->ns.count)) {
                                sock_gen_put(sk);
                                goto restart;
                        }
 
 {
        struct net *net;
 
-       tcp_twsk_purge(net_exit_list, AF_INET);
+       tcp_twsk_purge(net_exit_list);
 
        list_for_each_entry(net, net_exit_list, exit_list) {
                inet_pernet_hashinfo_free(net->ipv4.tcp_death_row.hashinfo);
 
 }
 EXPORT_SYMBOL_GPL(tcp_twsk_destructor);
 
-void tcp_twsk_purge(struct list_head *net_exit_list, int family)
+void tcp_twsk_purge(struct list_head *net_exit_list)
 {
        bool purged_once = false;
        struct net *net;
        list_for_each_entry(net, net_exit_list, exit_list) {
                if (net->ipv4.tcp_death_row.hashinfo->pernet) {
                        /* Even if tw_refcount == 1, we must clean up kernel reqsk */
-                       inet_twsk_purge(net->ipv4.tcp_death_row.hashinfo, family);
+                       inet_twsk_purge(net->ipv4.tcp_death_row.hashinfo);
                } else if (!purged_once) {
-                       inet_twsk_purge(&tcp_hashinfo, family);
+                       inet_twsk_purge(&tcp_hashinfo);
                        purged_once = true;
                }
        }
 
        inet_ctl_sock_destroy(net->ipv6.tcp_sk);
 }
 
-static void __net_exit tcpv6_net_exit_batch(struct list_head *net_exit_list)
-{
-       tcp_twsk_purge(net_exit_list, AF_INET6);
-}
-
 static struct pernet_operations tcpv6_net_ops = {
        .init       = tcpv6_net_init,
        .exit       = tcpv6_net_exit,
-       .exit_batch = tcpv6_net_exit_batch,
 };
 
 int __init tcpv6_init(void)