On Fri, Jul 18, 2003 at 09:49:36AM +0200, Oliver Neukum wrote:
>
> > @@ -116,6 +133,9 @@
> >
> > down(&driver->serialize);
> >
> > + /* release all urbs for this device */
> > + nuke_urbs(interface_to_usbdev(intf));
> > +
> > if (intf->driver && intf->driver->disconnect)
> > intf->driver->disconnect(intf);
> >
> > @@ -896,6 +916,9 @@
>
> It seems to me that if you are going to do this. Locking here
>
> static void hcd_endpoint_disable (struct usb_device *udev, int endpoint)
> <snip>
> dev = udev->hcpriv;
> hcd = udev->bus->hcpriv;
>
> rescan:
> /* (re)block new requests, as best we can */
> if (endpoint & USB_DIR_IN) {
> usb_endpoint_halt (udev, epnum, 0);
> udev->epmaxpacketin [epnum] = 0;
> } else {
> usb_endpoint_halt (udev, epnum, 1);
> udev->epmaxpacketout [epnum] = 0;
> }
>
> /* then kill any current requests */
> spin_lock_irqsave (&hcd_data_lock, flags);
> list_for_each_entry (urb, &dev->urb_list, urb_list) {
>
> is insufficient. There is a window between halting the endpoint and adding
> an URB to the list. Putting a synchronize_kernel in between should solve this.
> Comments?
Hm, where is the window? After the endpoint has been halted, we can't
submit any more urbs, right?
Or have a proposed patch that would show how to fix this?
thanks,
greg k-h
-------------------------------------------------------
This SF.net email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the
same time. Free trial click here: http://www.vmware.com/wl/offer/345/0
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel