diff options
Diffstat (limited to 'net/core/sock.c')
| -rw-r--r-- | net/core/sock.c | 33 | 
1 files changed, 12 insertions, 21 deletions
diff --git a/net/core/sock.c b/net/core/sock.c index 5e2a3132a8c..edf7220889a 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -136,7 +136,6 @@  static struct lock_class_key af_family_keys[AF_MAX];  static struct lock_class_key af_family_slock_keys[AF_MAX]; -#ifdef CONFIG_DEBUG_LOCK_ALLOC  /*   * Make lock validator output more readable. (we pre-construct these   * strings build-time, so that runtime initialization of socket @@ -187,7 +186,6 @@ static const char *af_family_clock_key_strings[AF_MAX+1] = {    "clock-AF_RXRPC" , "clock-AF_ISDN"     , "clock-AF_PHONET"   ,    "clock-AF_MAX"  }; -#endif  /*   * sk_callback_lock locking rules are per-address-family, @@ -2037,9 +2035,6 @@ static inline void release_proto_idx(struct proto *prot)  int proto_register(struct proto *prot, int alloc_slab)  { -	char *request_sock_slab_name = NULL; -	char *timewait_sock_slab_name; -  	if (alloc_slab) {  		prot->slab = kmem_cache_create(prot->name, prot->obj_size, 0,  					       SLAB_HWCACHE_ALIGN, NULL); @@ -2053,12 +2048,12 @@ int proto_register(struct proto *prot, int alloc_slab)  		if (prot->rsk_prot != NULL) {  			static const char mask[] = "request_sock_%s"; -			request_sock_slab_name = kmalloc(strlen(prot->name) + sizeof(mask) - 1, GFP_KERNEL); -			if (request_sock_slab_name == NULL) +			prot->rsk_prot->slab_name = kmalloc(strlen(prot->name) + sizeof(mask) - 1, GFP_KERNEL); +			if (prot->rsk_prot->slab_name == NULL)  				goto out_free_sock_slab; -			sprintf(request_sock_slab_name, mask, prot->name); -			prot->rsk_prot->slab = kmem_cache_create(request_sock_slab_name, +			sprintf(prot->rsk_prot->slab_name, mask, prot->name); +			prot->rsk_prot->slab = kmem_cache_create(prot->rsk_prot->slab_name,  								 prot->rsk_prot->obj_size, 0,  								 SLAB_HWCACHE_ALIGN, NULL); @@ -2072,14 +2067,14 @@ int proto_register(struct proto *prot, int alloc_slab)  		if (prot->twsk_prot != NULL) {  			static const char mask[] = "tw_sock_%s"; -			timewait_sock_slab_name = kmalloc(strlen(prot->name) + sizeof(mask) - 1, GFP_KERNEL); +			prot->twsk_prot->twsk_slab_name = kmalloc(strlen(prot->name) + sizeof(mask) - 1, GFP_KERNEL); -			if (timewait_sock_slab_name == NULL) +			if (prot->twsk_prot->twsk_slab_name == NULL)  				goto out_free_request_sock_slab; -			sprintf(timewait_sock_slab_name, mask, prot->name); +			sprintf(prot->twsk_prot->twsk_slab_name, mask, prot->name);  			prot->twsk_prot->twsk_slab = -				kmem_cache_create(timewait_sock_slab_name, +				kmem_cache_create(prot->twsk_prot->twsk_slab_name,  						  prot->twsk_prot->twsk_obj_size,  						  0, SLAB_HWCACHE_ALIGN,  						  NULL); @@ -2095,14 +2090,14 @@ int proto_register(struct proto *prot, int alloc_slab)  	return 0;  out_free_timewait_sock_slab_name: -	kfree(timewait_sock_slab_name); +	kfree(prot->twsk_prot->twsk_slab_name);  out_free_request_sock_slab:  	if (prot->rsk_prot && prot->rsk_prot->slab) {  		kmem_cache_destroy(prot->rsk_prot->slab);  		prot->rsk_prot->slab = NULL;  	}  out_free_request_sock_slab_name: -	kfree(request_sock_slab_name); +	kfree(prot->rsk_prot->slab_name);  out_free_sock_slab:  	kmem_cache_destroy(prot->slab);  	prot->slab = NULL; @@ -2125,18 +2120,14 @@ void proto_unregister(struct proto *prot)  	}  	if (prot->rsk_prot != NULL && prot->rsk_prot->slab != NULL) { -		const char *name = kmem_cache_name(prot->rsk_prot->slab); -  		kmem_cache_destroy(prot->rsk_prot->slab); -		kfree(name); +		kfree(prot->rsk_prot->slab_name);  		prot->rsk_prot->slab = NULL;  	}  	if (prot->twsk_prot != NULL && prot->twsk_prot->twsk_slab != NULL) { -		const char *name = kmem_cache_name(prot->twsk_prot->twsk_slab); -  		kmem_cache_destroy(prot->twsk_prot->twsk_slab); -		kfree(name); +		kfree(prot->twsk_prot->twsk_slab_name);  		prot->twsk_prot->twsk_slab = NULL;  	}  }  |