if (write_urb_pool[i]->transfer_buffer) kfree(write_urb_pool[i]->transfer_buffer); 
kfree(write_urb_pool[i]->transfer_buffer); 
static int __init empeg_init (void){	struct urb *urb;	int i, retval;	/* create our write urb pool and transfer buffers */ 	spin_lock_init (&write_urb_pool_lock);	for (i = 0; i < NUM_URBS; ++i) {		urb = usb_alloc_urb(0, GFP_KERNEL);		write_urb_pool[i] = urb;		if (urb == NULL) {			err("No more urbs???");			continue;		}		urb->transfer_buffer = kmalloc (URB_TRANSFER_BUFFER_SIZE, GFP_KERNEL);		if (!urb->transfer_buffer) {			err("%s - out of memory for urb buffers.", 			    __FUNCTION__);			continue;		}	}	retval = usb_serial_register(&empeg_device);	if (retval)		goto failed_usb_serial_register;	retval = usb_register(&empeg_driver);	if (retval)		goto failed_usb_register;	info(DRIVER_VERSION ":" DRIVER_DESC);	return 0;failed_usb_register:	usb_serial_deregister(&empeg_device);failed_usb_serial_register:	for (i = 0; i < NUM_URBS; ++i) {		if (write_urb_pool[i]) {			if (write_urb_pool[i]->transfer_buffer)				kfree(write_urb_pool[i]->transfer_buffer);			usb_free_urb(write_urb_pool[i]);		}	}	return retval;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/1bc3c9e1e44c2059fe2ffa6ff70ad0a925d7b05f/empeg.c/buggy/drivers/usb/serial/empeg.c