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

Reply via email to