Hi Oliver, so something like this?

--- gregkh-2.6/drivers/usb/core/devio.c.orig    2004-04-17 20:12:11.000000000 +0200
+++ gregkh-2.6/drivers/usb/core/devio.c 2004-04-17 20:31:48.000000000 +0200
@@ -335,6 +335,7 @@
 static void driver_disconnect(struct usb_interface *intf)
 {
        struct dev_state *ps = usb_get_intfdata (intf);
+       unsigned int ifnum = intf->altsetting->desc.bInterfaceNumber;
 
        if (!ps)
                return;
@@ -343,13 +344,12 @@
         * all pending I/O requests; 2.6 does that.
         */
 
-       /* prevent new I/O requests */
-       ps->dev = 0;
-       clear_bit(intf->cur_altsetting->desc.bInterfaceNumber, &ps->ifclaimed);
+       BUG_ON(ifnum >= 8*sizeof(ps->ifclaimed));
+       clear_bit(ifnum, &ps->ifclaimed);
        usb_set_intfdata (intf, NULL);
 
        /* force async requests to complete */
-       destroy_all_async (ps);
+       destroy_async_on_interface(ps, ifnum);
 }
 
 struct usb_driver usbdevfs_driver = {


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to