 out_free: if (slab != NULL) kmem_cache_free(slab, sk); else kfree(sk); return NULL; 
struct sock *sk_alloc(int family, unsigned int __nocast priority,		      struct proto *prot, int zero_it){	struct sock *sk = NULL;	kmem_cache_t *slab = prot->slab;	if (slab != NULL)		sk = kmem_cache_alloc(slab, priority);	else		sk = kmalloc(prot->obj_size, priority);	if (sk) {		if (zero_it) {			memset(sk, 0, prot->obj_size);			sk->sk_family = family;			/*			 * See comment in struct sock definition to understand			 * why we need sk_prot_creator -acme			 */			sk->sk_prot = sk->sk_prot_creator = prot;			sock_lock_init(sk);		}				if (security_sk_alloc(sk, family, priority)) {			if (slab != NULL)				kmem_cache_free(slab, sk);			else				kfree(sk);			sk = NULL;		} else			__module_get(prot->owner);	}	return sk;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/a79af59efd20990473d579b1d8d70bb120f0920c/sock.c/clean/net/core/sock.c