if (sl) clear_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags); }
int w1_process(void *data){	struct w1_master *dev = (struct w1_master *) data;	struct list_head *ent, *n;	struct w1_slave *sl;	daemonize("%s", dev->name);	allow_signal(SIGTERM);	while (!dev->need_exit) {		try_to_freeze(PF_FREEZE);		msleep_interruptible(w1_timeout * 1000);		if (signal_pending(current))			flush_signals(current);		if (dev->need_exit)			break;		if (!dev->initialized)			continue;		if (down_interruptible(&dev->mutex))			continue;		list_for_each_safe(ent, n, &dev->slist) {			sl = list_entry(ent, struct w1_slave, w1_slave_entry);			if (sl)				clear_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags);		}				w1_search_devices(dev, w1_slave_found);		list_for_each_safe(ent, n, &dev->slist) {			sl = list_entry(ent, struct w1_slave, w1_slave_entry);			if (sl && !test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags) && !--sl->ttl) {				list_del (&sl->w1_slave_entry);				w1_slave_detach (sl);				kfree (sl);				dev->slave_count--;			}			else if (test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags))				sl->ttl = dev->slave_ttl;		}		up(&dev->mutex);	}	atomic_dec(&dev->refcnt);	complete_and_exit(&dev->dev_exited, 0);	return 0;}