list_for_each_safe(ent, n, &dev->slist) { sl = list_entry(ent, struct w1_slave, w1_slave_entry); 
list_for_each_entry_safe(sl, sln, &dev->slist, w1_slave_entry) { list_del(&sl->w1_slave_entry); 
int w1_control(void *data){	struct w1_slave *sl;	struct w1_master *dev;	struct list_head *ent, *ment, *n, *mn;	int err, have_to_wait = 0;	daemonize("w1_control");	allow_signal(SIGTERM);	while (!control_needs_exit || have_to_wait) {		have_to_wait = 0;		try_to_freeze(PF_FREEZE);		msleep_interruptible(w1_timeout * 1000);		if (signal_pending(current))			flush_signals(current);		list_for_each_safe(ment, mn, &w1_masters) {			dev = list_entry(ment, struct w1_master, w1_master_entry);			if (!control_needs_exit && !dev->need_exit)				continue;			/*			 * Little race: we can create thread but not set the flag.			 * Get a chance for external process to set flag up.			 */			if (!dev->initialized) {				have_to_wait = 1;				continue;			}			spin_lock(&w1_mlock);			list_del(&dev->w1_master_entry);			spin_unlock(&w1_mlock);			if (control_needs_exit) {				dev->need_exit = 1;				err = kill_proc(dev->kpid, SIGTERM, 1);				if (err)					dev_err(&dev->dev,						 "Failed to send signal to w1 kernel thread %d.\n",						 dev->kpid);			}			wait_for_completion(&dev->dev_exited);			list_for_each_safe(ent, n, &dev->slist) {				sl = list_entry(ent, struct w1_slave, w1_slave_entry);				if (!sl)					dev_warn(&dev->dev,						  "%s: slave entry is NULL.\n",						  __func__);				else {					list_del(&sl->w1_slave_entry);					w1_slave_detach(sl);					kfree(sl);				}			}			w1_destroy_master_attributes(dev);			atomic_dec(&dev->refcnt);		}	}	complete_and_exit(&w1_control_complete, 0);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/7785925dd8e0d2f389d4a9168f1683c6b249a552/w1.c/clean/drivers/w1/w1.c