On Tue, 2007-07-17 at 11:01 -0400, Dmitry Torokhov wrote: > Hi, > > On 7/17/07, Soeren Sonnenburg 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. good catch. modified patch accordingly+attached. > How many boxes did you try this patch on? Mine plus 1 other. However please note that Matthews patch has been (which is what this patch is based on) is in the mactel-patches repository for quite some time now and that the not-yet-cleanup up variant of this patch was posted to mactel-devel... So the modeswitch part should work... Soeren -- Sometimes, there's a moment as you're waking, when you become aware of the real world around you, but you're still dreaming.