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
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel