diff options
Diffstat (limited to 'drivers/usb/core/driver.c')
| -rw-r--r-- | drivers/usb/core/driver.c | 4 | 
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c index 3d7793d9303..8c081308b0e 100644 --- a/drivers/usb/core/driver.c +++ b/drivers/usb/core/driver.c @@ -279,7 +279,9 @@ static int usb_unbind_interface(struct device *dev)  	 * altsetting means creating new endpoint device entries).  	 * When either of these happens, defer the Set-Interface.  	 */ -	if (!error && intf->dev.power.status == DPM_ON) +	if (intf->cur_altsetting->desc.bAlternateSetting == 0) +		;	/* Already in altsetting 0 so skip Set-Interface */ +	else if (!error && intf->dev.power.status == DPM_ON)  		usb_set_interface(udev, intf->altsetting[0].  				desc.bInterfaceNumber, 0);  	else  |