|
@@ -144,12 +144,14 @@ static void led_disconnect(struct usb_interface *interface)
|
|
struct usb_led *dev;
|
|
struct usb_led *dev;
|
|
|
|
|
|
dev = usb_get_intfdata (interface);
|
|
dev = usb_get_intfdata (interface);
|
|
- usb_set_intfdata (interface, NULL);
|
|
|
|
|
|
|
|
device_remove_file(&interface->dev, &dev_attr_blue);
|
|
device_remove_file(&interface->dev, &dev_attr_blue);
|
|
device_remove_file(&interface->dev, &dev_attr_red);
|
|
device_remove_file(&interface->dev, &dev_attr_red);
|
|
device_remove_file(&interface->dev, &dev_attr_green);
|
|
device_remove_file(&interface->dev, &dev_attr_green);
|
|
|
|
|
|
|
|
+ /* first remove the files, then set the pointer to NULL */
|
|
|
|
+ usb_set_intfdata (interface, NULL);
|
|
|
|
+
|
|
usb_put_dev(dev->udev);
|
|
usb_put_dev(dev->udev);
|
|
|
|
|
|
kfree(dev);
|
|
kfree(dev);
|