in es2.c [773:811]
static void es2_destroy(struct es2_ap_dev *es2)
{
struct usb_device *udev;
struct urb *urb;
int i;
debugfs_remove(es2->apb_log_enable_dentry);
usb_log_disable(es2);
/* Tear down everything! */
for (i = 0; i < NUM_CPORT_OUT_URB; ++i) {
urb = es2->cport_out_urb[i];
usb_kill_urb(urb);
usb_free_urb(urb);
es2->cport_out_urb[i] = NULL;
es2->cport_out_urb_busy[i] = false; /* just to be anal */
}
for (i = 0; i < NUM_ARPC_IN_URB; ++i) {
usb_free_urb(es2->arpc_urb[i]);
kfree(es2->arpc_buffer[i]);
es2->arpc_buffer[i] = NULL;
}
for (i = 0; i < NUM_CPORT_IN_URB; ++i) {
usb_free_urb(es2->cport_in.urb[i]);
kfree(es2->cport_in.buffer[i]);
es2->cport_in.buffer[i] = NULL;
}
/* release reserved CDSI0 and CDSI1 cports */
gb_hd_cport_release_reserved(es2->hd, ES2_CPORT_CDSI1);
gb_hd_cport_release_reserved(es2->hd, ES2_CPORT_CDSI0);
udev = es2->usb_dev;
gb_hd_put(es2->hd);
usb_put_dev(udev);
}