up(&cpuset_sem); 
cpuset_up(&cpuset_sem); 
static long cpuset_create(struct cpuset *parent, const char *name, int mode){	struct cpuset *cs;	int err;	cs = kmalloc(sizeof(*cs), GFP_KERNEL);	if (!cs)		return -ENOMEM;	down(&cpuset_sem);	refresh_mems();	cs->flags = 0;	if (notify_on_release(parent))		set_bit(CS_NOTIFY_ON_RELEASE, &cs->flags);	cs->cpus_allowed = CPU_MASK_NONE;	cs->mems_allowed = NODE_MASK_NONE;	atomic_set(&cs->count, 0);	INIT_LIST_HEAD(&cs->sibling);	INIT_LIST_HEAD(&cs->children);	atomic_inc(&cpuset_mems_generation);	cs->mems_generation = atomic_read(&cpuset_mems_generation);	cs->parent = parent;	list_add(&cs->sibling, &cs->parent->children);	err = cpuset_create_dir(cs, name, mode);	if (err < 0)		goto err;	/*	 * Release cpuset_sem before cpuset_populate_dir() because it	 * will down() this new directory's i_sem and if we race with	 * another mkdir, we might deadlock.	 */	up(&cpuset_sem);	err = cpuset_populate_dir(cs->dentry);	/* If err < 0, we have a half-filled directory - oh well ;) */	return 0;err:	list_del(&cs->sibling);	up(&cpuset_sem);	kfree(cs);	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4247bdc60048018b98f71228b45cfbc5f5270c86/cpuset.c/clean/kernel/cpuset.c