Hi Alan, if probe() fails, you fail to restore the old pm count. If the driver supports autosuspend, but doesn't bind, the interface, though unbound, will not suspend again.
Regards Oliver Signed-off-by: Oliver Neukum <[EMAIL PROTECTED]> ------ --- a/drivers/usb/core/driver.c 2007-02-19 14:27:11.000000000 +0100 +++ b/drivers/usb/core/driver.c 2007-02-19 14:32:13.000000000 +0100 @@ -189,6 +189,7 @@ struct usb_interface *intf; struct usb_device *udev; const struct usb_device_id *id; + int old_usage_count; int error = -ENODEV; dev_dbg(dev, "%s\n", __FUNCTION__); @@ -219,12 +220,14 @@ /* The interface should always appear to be in use * unless the driver suports autosuspend. */ + old_usage_count = intf->pm_usage_cnt; intf->pm_usage_cnt = !(driver->supports_autosuspend); error = driver->probe(intf, id); if (error) { mark_quiesced(intf); intf->needs_remote_wakeup = 0; + intf->pm_usage_cnt = old_usage_count; intf->condition = USB_INTERFACE_UNBOUND; } else intf->condition = USB_INTERFACE_BOUND; ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel