cpuset_up(&cpuset_sem); 
up(&cpuset_sem); 
int cpuset_zone_allowed(struct zone *z, gfp_t gfp_mask){	int node;			/* node that zone z is on */	const struct cpuset *cs;	/* current cpuset ancestors */	int allowed = 1;		/* is allocation in zone z allowed? */	if (in_interrupt())		return 1;	node = z->zone_pgdat->node_id;	if (node_isset(node, current->mems_allowed))		return 1;	if (gfp_mask & __GFP_HARDWALL)	/* If hardwall request, stop here */		return 0;	/* Not hardwall and node outside mems_allowed: scan up cpusets */	cpuset_down(&cpuset_sem);	cs = current->cpuset;	if (!cs)		goto done;		/* current task exiting */	cs = nearest_exclusive_ancestor(cs);	allowed = node_isset(node, cs->mems_allowed);done:	cpuset_up(&cpuset_sem);	return allowed;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/5aa15b5f27fc2c404530c6c8eabdb8437deb3163/cpuset.c/buggy/kernel/cpuset.c