diff options
Diffstat (limited to 'net/dccp/proto.c')
| -rw-r--r-- | net/dccp/proto.c | 33 | 
1 files changed, 5 insertions, 28 deletions
diff --git a/net/dccp/proto.c b/net/dccp/proto.c index 2e78458900f2..eb8e128e43e8 100644 --- a/net/dccp/proto.c +++ b/net/dccp/proto.c @@ -1120,12 +1120,6 @@ static int __init dccp_init(void)  				  SLAB_HWCACHE_ALIGN | SLAB_ACCOUNT, NULL);  	if (!dccp_hashinfo.bind_bucket_cachep)  		goto out_free_hashinfo2; -	dccp_hashinfo.bind2_bucket_cachep = -		kmem_cache_create("dccp_bind2_bucket", -				  sizeof(struct inet_bind2_bucket), 0, -				  SLAB_HWCACHE_ALIGN | SLAB_ACCOUNT, NULL); -	if (!dccp_hashinfo.bind2_bucket_cachep) -		goto out_free_bind_bucket_cachep;  	/*  	 * Size and allocate the main established and bind bucket @@ -1156,7 +1150,7 @@ static int __init dccp_init(void)  	if (!dccp_hashinfo.ehash) {  		DCCP_CRIT("Failed to allocate DCCP established hash table"); -		goto out_free_bind2_bucket_cachep; +		goto out_free_bind_bucket_cachep;  	}  	for (i = 0; i <= dccp_hashinfo.ehash_mask; i++) @@ -1182,23 +1176,14 @@ static int __init dccp_init(void)  		goto out_free_dccp_locks;  	} -	dccp_hashinfo.bhash2 = (struct inet_bind2_hashbucket *) -		__get_free_pages(GFP_ATOMIC | __GFP_NOWARN, bhash_order); - -	if (!dccp_hashinfo.bhash2) { -		DCCP_CRIT("Failed to allocate DCCP bind2 hash table"); -		goto out_free_dccp_bhash; -	} -  	for (i = 0; i < dccp_hashinfo.bhash_size; i++) {  		spin_lock_init(&dccp_hashinfo.bhash[i].lock);  		INIT_HLIST_HEAD(&dccp_hashinfo.bhash[i].chain); -		INIT_HLIST_HEAD(&dccp_hashinfo.bhash2[i].chain);  	}  	rc = dccp_mib_init();  	if (rc) -		goto out_free_dccp_bhash2; +		goto out_free_dccp_bhash;  	rc = dccp_ackvec_init();  	if (rc) @@ -1222,38 +1207,30 @@ out_ackvec_exit:  	dccp_ackvec_exit();  out_free_dccp_mib:  	dccp_mib_exit(); -out_free_dccp_bhash2: -	free_pages((unsigned long)dccp_hashinfo.bhash2, bhash_order);  out_free_dccp_bhash:  	free_pages((unsigned long)dccp_hashinfo.bhash, bhash_order);  out_free_dccp_locks:  	inet_ehash_locks_free(&dccp_hashinfo);  out_free_dccp_ehash:  	free_pages((unsigned long)dccp_hashinfo.ehash, ehash_order); -out_free_bind2_bucket_cachep: -	kmem_cache_destroy(dccp_hashinfo.bind2_bucket_cachep);  out_free_bind_bucket_cachep:  	kmem_cache_destroy(dccp_hashinfo.bind_bucket_cachep);  out_free_hashinfo2:  	inet_hashinfo2_free_mod(&dccp_hashinfo);  out_fail:  	dccp_hashinfo.bhash = NULL; -	dccp_hashinfo.bhash2 = NULL;  	dccp_hashinfo.ehash = NULL;  	dccp_hashinfo.bind_bucket_cachep = NULL; -	dccp_hashinfo.bind2_bucket_cachep = NULL;  	return rc;  }  static void __exit dccp_fini(void)  { -	int bhash_order = get_order(dccp_hashinfo.bhash_size * -				    sizeof(struct inet_bind_hashbucket)); -  	ccid_cleanup_builtins();  	dccp_mib_exit(); -	free_pages((unsigned long)dccp_hashinfo.bhash, bhash_order); -	free_pages((unsigned long)dccp_hashinfo.bhash2, bhash_order); +	free_pages((unsigned long)dccp_hashinfo.bhash, +		   get_order(dccp_hashinfo.bhash_size * +			     sizeof(struct inet_bind_hashbucket)));  	free_pages((unsigned long)dccp_hashinfo.ehash,  		   get_order((dccp_hashinfo.ehash_mask + 1) *  			     sizeof(struct inet_ehash_bucket)));  | 
