if (dmi1) kfree(dmi1); 
kfree(dmi1); 
int dev_mc_add(struct net_device *dev, void *addr, int alen, int glbl){	int err = 0;	struct dev_mc_list *dmi, *dmi1;	dmi1 = (struct dev_mc_list *)kmalloc(sizeof(*dmi), GFP_ATOMIC);	spin_lock_bh(&dev->xmit_lock);	for (dmi = dev->mc_list; dmi != NULL; dmi = dmi->next) {		if (memcmp(dmi->dmi_addr, addr, dmi->dmi_addrlen) == 0 &&		    dmi->dmi_addrlen == alen) {			if (glbl) {				int old_glbl = dmi->dmi_gusers;				dmi->dmi_gusers = 1;				if (old_glbl)					goto done;			}			dmi->dmi_users++;			goto done;		}	}	if ((dmi = dmi1) == NULL) {		spin_unlock_bh(&dev->xmit_lock);		return -ENOMEM;	}	memcpy(dmi->dmi_addr, addr, alen);	dmi->dmi_addrlen = alen;	dmi->next = dev->mc_list;	dmi->dmi_users = 1;	dmi->dmi_gusers = glbl ? 1 : 0;	dev->mc_list = dmi;	dev->mc_count++;	__dev_mc_upload(dev);		spin_unlock_bh(&dev->xmit_lock);	return 0;done:	spin_unlock_bh(&dev->xmit_lock);	if (dmi1)		kfree(dmi1);	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/a51482bde22f99c63fbbb57d5d46cc666384e379/dev_mcast.c/clean/net/core/dev_mcast.c