From: Alan Stern Date: Mon, 3 Dec 2007 20:42:10 +0000 (-0500) Subject: USB: repair USBDEVFS_CONNECT ioctl X-Git-Tag: v2.6.25-rc1~1075^2~75 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=885e97478bf95b46a7cff40df49c2bb1a5503afd;p=linux-2.6-omap-h63xx.git USB: repair USBDEVFS_CONNECT ioctl For as long as I've known about it, the USBDEVFS_CONNECT ioctl hasn't done what it's supposed to. The current code reprobes _all_ the unbound USB interfaces; this patch (as1021) makes it reprobe only the interface for which it was called. Signed-off-by: Alan Stern Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index 1f4f6d02fe2..85ec65ada12 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c @@ -1373,9 +1373,10 @@ static int proc_ioctl(struct dev_state *ps, struct usbdevfs_ioctl *ctl) /* let kernel drivers try to (re)bind to the interface */ case USBDEVFS_CONNECT: - usb_unlock_device(ps->dev); - retval = bus_rescan_devices(intf->dev.bus); - usb_lock_device(ps->dev); + if (!intf->dev.driver) + retval = device_attach(&intf->dev); + else + retval = -EBUSY; break; /* talk directly to the interface's driver */