if (new) kfree(new); 
kfree(new); 
dasd_add_busid(char *bus_id, int features){	struct dasd_devmap *devmap, *new, *tmp;	int hash;	new = (struct dasd_devmap *)		kmalloc(sizeof(struct dasd_devmap), GFP_KERNEL);	if (!new)		return ERR_PTR(-ENOMEM);	spin_lock(&dasd_devmap_lock);	devmap = 0;	hash = dasd_hash_busid(bus_id);	list_for_each_entry(tmp, &dasd_hashlists[hash], list)		if (strncmp(tmp->bus_id, bus_id, BUS_ID_SIZE) == 0) {			devmap = tmp;			break;		}	if (!devmap) {		/* This bus_id is new. */		new->devindex = dasd_max_devindex++;		strncpy(new->bus_id, bus_id, BUS_ID_SIZE);		new->features = features;		new->device = 0;		list_add(&new->list, &dasd_hashlists[hash]);		devmap = new;		new = 0;	}	spin_unlock(&dasd_devmap_lock);	if (new)		kfree(new);	return devmap;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/17fd682e544556a2a829e94383239c029bb21c5e/dasd_devmap.c/buggy/drivers/s390/block/dasd_devmap.c