Hi,

On 7/17/07, Soeren Sonnenburg <[EMAIL PROTECTED]> wrote:

 err_free_buffer:
@@ -656,6 +699,7 @@ static void atp_disconnect(struct usb_interface *iface)

       usb_set_intfdata(iface, NULL);
       if (dev) {
+               cancel_work_sync(&dev->work);
               usb_kill_urb(dev->urb);
               input_unregister_device(dev->input);
               usb_buffer_free(dev->udev, dev->datalen,


This should go into atp_close() and I think you need to do
cancel_work_sync after calling usb_kill_urb() otherwise you risk it
being submitted while you gettingto kill the urb.

How many boxes did you try this patch on?

--
Dmitry

Reply via email to