if (cqr->cpaddr != NULL) kfree(cqr->cpaddr); 
kfree(cqr->cpaddr); 
dasd_kmalloc_request(char *magic, int cplength, int datasize,		   struct dasd_device * device){	struct dasd_ccw_req *cqr;	/* Sanity checks */	if ( magic == NULL || datasize > PAGE_SIZE ||	     (cplength*sizeof(struct ccw1)) > PAGE_SIZE)		BUG();	cqr = kmalloc(sizeof(struct dasd_ccw_req), GFP_ATOMIC);	if (cqr == NULL)		return ERR_PTR(-ENOMEM);	memset(cqr, 0, sizeof(struct dasd_ccw_req));	cqr->cpaddr = NULL;	if (cplength > 0) {		cqr->cpaddr = kmalloc(cplength*sizeof(struct ccw1),				      GFP_ATOMIC | GFP_DMA);		if (cqr->cpaddr == NULL) {			kfree(cqr);			return ERR_PTR(-ENOMEM);		}		memset(cqr->cpaddr, 0, cplength*sizeof(struct ccw1));	}	cqr->data = NULL;	if (datasize > 0) {		cqr->data = kmalloc(datasize, GFP_ATOMIC | GFP_DMA);		if (cqr->data == NULL) {			if (cqr->cpaddr != NULL)				kfree(cqr->cpaddr);			kfree(cqr);			return ERR_PTR(-ENOMEM);		}		memset(cqr->data, 0, datasize);	}	strncpy((char *) &cqr->magic, magic, 4);	ASCEBC((char *) &cqr->magic, 4);	set_bit(DASD_CQR_FLAGS_USE_ERP, &cqr->flags);	dasd_get_device(device);	return cqr;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/17fd682e544556a2a829e94383239c029bb21c5e/dasd.c/buggy/drivers/s390/block/dasd.c