@ -1416,24 +1416,6 @@ static __init int sctp_init(void)
for ( order = 0 ; ( 1UL < < order ) < goal ; order + + )
;
do {
sctp_assoc_hashsize = ( 1UL < < order ) * PAGE_SIZE /
sizeof ( struct sctp_hashbucket ) ;
if ( ( sctp_assoc_hashsize > ( 64 * 1024 ) ) & & order > 0 )
continue ;
sctp_assoc_hashtable = ( struct sctp_hashbucket * )
__get_free_pages ( GFP_KERNEL | __GFP_NOWARN , order ) ;
} while ( ! sctp_assoc_hashtable & & - - order > 0 ) ;
if ( ! sctp_assoc_hashtable ) {
pr_err ( " Failed association hash alloc \n " ) ;
status = - ENOMEM ;
goto err_ahash_alloc ;
}
for ( i = 0 ; i < sctp_assoc_hashsize ; i + + ) {
rwlock_init ( & sctp_assoc_hashtable [ i ] . lock ) ;
INIT_HLIST_HEAD ( & sctp_assoc_hashtable [ i ] . chain ) ;
}
/* Allocate and initialize the endpoint hash table. */
sctp_ep_hashsize = 64 ;
sctp_ep_hashtable =
@ -1470,8 +1452,7 @@ static __init int sctp_init(void)
if ( sctp_transport_hashtable_init ( ) )
goto err_thash_alloc ;
pr_info ( " Hash tables configured (established %d bind %d) \n " ,
sctp_assoc_hashsize , sctp_port_hashsize ) ;
pr_info ( " Hash tables configured (bind %d) \n " , sctp_port_hashsize ) ;
sctp_sysctl_register ( ) ;
@ -1528,10 +1509,6 @@ err_bhash_alloc:
err_thash_alloc :
kfree ( sctp_ep_hashtable ) ;
err_ehash_alloc :
free_pages ( ( unsigned long ) sctp_assoc_hashtable ,
get_order ( sctp_assoc_hashsize *
sizeof ( struct sctp_hashbucket ) ) ) ;
err_ahash_alloc :
percpu_counter_destroy ( & sctp_sockets_allocated ) ;
err_percpu_counter_init :
kmem_cache_destroy ( sctp_chunk_cachep ) ;
@ -1565,13 +1542,10 @@ static __exit void sctp_exit(void)
sctp_sysctl_unregister ( ) ;
free_pages ( ( unsigned long ) sctp_assoc_hashtable ,
get_order ( sctp_assoc_hashsize *
sizeof ( struct sctp_hashbucket ) ) ) ;
kfree ( sctp_ep_hashtable ) ;
free_pages ( ( unsigned long ) sctp_port_hashtable ,
get_order ( sctp_port_hashsize *
sizeof ( struct sctp_bind_hashbucket ) ) ) ;
kfree ( sctp_ep_hashtable ) ;
sctp_transport_hashtable_destroy ( ) ;
percpu_counter_destroy ( & sctp_sockets_allocated ) ;