From: H Hartley Sweeten Date: Tue, 14 May 2013 20:29:35 +0000 (-0700) Subject: staging: comedi: usbduxfast: Use comedi_usb_auto_unconfig() for (*disconnect) X-Git-Tag: firefly_0821_release~176^2~5845^2~664 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0c4ab6715cf34293f40c8c80f361ca08d7cf1bc2;p=firefly-linux-kernel-4.4.55.git staging: comedi: usbduxfast: Use comedi_usb_auto_unconfig() for (*disconnect) The usb_driver (*disconnect) calls comedi_usb_auto_unconfig() then frees any allocations by calling tidy_up(). comedi_usb_auto_unconfig() calls the comedi_driver (*detach) function, usbduxfast_detach(). Move the tidy_up() call into usbduxfast_detach() and use the comedi_usb_auto_unconfig() directly for the (*disconnect). Signed-off-by: H Hartley Sweeten Cc: Ian Abbott Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/comedi/drivers/usbduxfast.c b/drivers/staging/comedi/drivers/usbduxfast.c index cf99e5b12c9c..a83b2b5bcf18 100644 --- a/drivers/staging/comedi/drivers/usbduxfast.c +++ b/drivers/staging/comedi/drivers/usbduxfast.c @@ -1366,6 +1366,7 @@ static void usbduxfast_detach(struct comedi_device *dev) dev->private = NULL; devpriv->attached = 0; devpriv->comedidev = NULL; + tidy_up(devpriv); up(&start_stop_sem); up(&devpriv->sem); } @@ -1486,29 +1487,6 @@ static int usbduxfast_usb_probe(struct usb_interface *intf, return comedi_usb_auto_config(intf, &usbduxfast_driver, 0); } -static void usbduxfast_usb_disconnect(struct usb_interface *intf) -{ - struct usbduxfast_private *devpriv = usb_get_intfdata(intf); - struct usb_device *usb = interface_to_usbdev(intf); - - if (!devpriv) { - dev_err(&intf->dev, "disconnect called with null pointer.\n"); - return; - } - if (devpriv->usb != usb) { - dev_err(&intf->dev, "BUG! called with wrong ptr!!!\n"); - return; - } - - comedi_usb_auto_unconfig(intf); - - down(&start_stop_sem); - down(&devpriv->sem); - tidy_up(devpriv); - up(&devpriv->sem); - up(&start_stop_sem); -} - static const struct usb_device_id usbduxfast_usb_table[] = { /* { USB_DEVICE(0x4b4, 0x8613) }, testing */ { USB_DEVICE(0x13d8, 0x0010) }, /* real ID */ @@ -1520,7 +1498,7 @@ MODULE_DEVICE_TABLE(usb, usbduxfast_usb_table); static struct usb_driver usbduxfast_usb_driver = { .name = "usbduxfast", .probe = usbduxfast_usb_probe, - .disconnect = usbduxfast_usb_disconnect, + .disconnect = comedi_usb_auto_unconfig, .id_table = usbduxfast_usb_table, }; module_comedi_usb_driver(usbduxfast_driver, usbduxfast_usb_driver);