int set_hashsize(const char *val, struct kernel_param *kp) 
static int set_hashsize(const char *val, struct kernel_param *kp) 
int set_hashsize(const char *val, struct kernel_param *kp){	int i, bucket, hashsize, vmalloced;	int old_vmalloced, old_size;	int rnd;	struct list_head *hash, *old_hash;	struct ip_conntrack_tuple_hash *h;	/* On boot, we can set this without any fancy locking. */	if (!ip_conntrack_htable_size)		return param_set_int(val, kp);	hashsize = simple_strtol(val, NULL, 0);	if (!hashsize)		return -EINVAL;	hash = alloc_hashtable(hashsize, &vmalloced);	if (!hash)		return -ENOMEM;	/* We have to rehash for the new table anyway, so we also can 	 * use a new random seed */	get_random_bytes(&rnd, 4);	write_lock_bh(&ip_conntrack_lock);	for (i = 0; i < ip_conntrack_htable_size; i++) {		while (!list_empty(&ip_conntrack_hash[i])) {			h = list_entry(ip_conntrack_hash[i].next,				       struct ip_conntrack_tuple_hash, list);			list_del(&h->list);			bucket = __hash_conntrack(&h->tuple, hashsize, rnd);			list_add_tail(&h->list, &hash[bucket]);		}	}	old_size = ip_conntrack_htable_size;	old_vmalloced = ip_conntrack_vmalloc;	old_hash = ip_conntrack_hash;	ip_conntrack_htable_size = hashsize;	ip_conntrack_vmalloc = vmalloced;	ip_conntrack_hash = hash;	ip_conntrack_hash_rnd = rnd;	write_unlock_bh(&ip_conntrack_lock);	free_conntrack_hash(old_hash, old_vmalloced, old_size);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/d127e94a5cf1c9c996b8c67cd2595b96c3e35e4c/ip_conntrack_core.c/buggy/net/ipv4/netfilter/ip_conntrack_core.c