|
@@ -1514,6 +1514,7 @@ static void acm_disconnect(struct usb_interface *intf)
|
|
|
{
|
|
|
struct acm *acm = usb_get_intfdata(intf);
|
|
|
struct tty_struct *tty;
|
|
|
+ int i;
|
|
|
|
|
|
/* sibling interface is already cleaning up */
|
|
|
if (!acm)
|
|
@@ -1544,6 +1545,11 @@ static void acm_disconnect(struct usb_interface *intf)
|
|
|
|
|
|
tty_unregister_device(acm_tty_driver, acm->minor);
|
|
|
|
|
|
+ usb_free_urb(acm->ctrlurb);
|
|
|
+ for (i = 0; i < ACM_NW; i++)
|
|
|
+ usb_free_urb(acm->wb[i].urb);
|
|
|
+ for (i = 0; i < acm->rx_buflimit; i++)
|
|
|
+ usb_free_urb(acm->read_urbs[i]);
|
|
|
acm_write_buffers_free(acm);
|
|
|
usb_free_coherent(acm->dev, acm->ctrlsize, acm->ctrl_buffer, acm->ctrl_dma);
|
|
|
acm_read_buffers_free(acm);
|