if (sk->sk_prot->slab != NULL) kmem_cache_free(sk->sk_prot->slab, sk); 
if (sk->sk_prot_creator->slab != NULL) kmem_cache_free(sk->sk_prot_creator->slab, sk); 
void sk_free(struct sock *sk){	struct sk_filter *filter;	struct module *owner = sk->sk_prot->owner;	if (sk->sk_destruct)		sk->sk_destruct(sk);	filter = sk->sk_filter;	if (filter) {		sk_filter_release(sk, filter);		sk->sk_filter = NULL;	}	sock_disable_timestamp(sk);	if (atomic_read(&sk->sk_omem_alloc))		printk(KERN_DEBUG "%s: optmem leakage (%d bytes) detected.\n",		       __FUNCTION__, atomic_read(&sk->sk_omem_alloc));	security_sk_free(sk);	if (sk->sk_prot->slab != NULL)		kmem_cache_free(sk->sk_prot->slab, sk);	else		kfree(sk);	module_put(owner);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/476e19cfa131e2b6eedc4017b627cdc4ca419ffb/sock.c/buggy/net/core/sock.c