Am Freitag, 26. Mai 2006 11:15 schrieb Michael Hanselmann: > +static void appledisplay_disconnect(struct usb_interface *iface) > +{ > + struct appledisplay *pdata = usb_get_intfdata(iface); > + > + if (pdata) { > + cancel_delayed_work(&pdata->work); > + usb_kill_urb(pdata->urb); > + backlight_device_unregister(pdata->bd);
This is a race condition. As the URB's completion handler can queue new work, you must kill the URB before you cancel work. Regards Oliver ------------------------------------------------------- All the advantages of Linux Managed Hosting--Without the Cost and Risk! Fully trained technicians. The highest number of Red Hat certifications in the hosting industry. Fanatical Support. Click to learn more http://sel.as-us.falkag.net/sel?cmd=lnk&kid7521&bid$8729&dat1642 _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel