 if (w1_check_family(newf)) return -EINVAL; 
int w1_register_family(struct w1_family *newf){	struct list_head *ent, *n;	struct w1_family *f;	int ret = 0;	if (w1_check_family(newf))		return -EINVAL;	spin_lock(&w1_flock);	list_for_each_safe(ent, n, &w1_families) {		f = list_entry(ent, struct w1_family, family_entry);		if (f->fid == newf->fid) {			ret = -EEXIST;			break;		}	}	if (!ret) {		atomic_set(&newf->refcnt, 0);		newf->need_exit = 0;		list_add_tail(&newf->family_entry, &w1_families);	}	spin_unlock(&w1_flock);	w1_reconnect_slaves(newf);	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/d2a4ef6a0ce4d841293b49bf2cdc17a0ebfaaf9d/w1_family.c/buggy/drivers/w1/w1_family.c