diff options
Diffstat (limited to 'drivers/usb/core/hub.c')
| -rw-r--r-- | drivers/usb/core/hub.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 1d212f82c69b..54cd8ef795ec 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -988,13 +988,17 @@ int usb_remove_device(struct usb_device *udev)  {  	struct usb_hub *hub;  	struct usb_interface *intf; +	int ret;  	if (!udev->parent)	/* Can't remove a root hub */  		return -EINVAL;  	hub = usb_hub_to_struct_hub(udev->parent);  	intf = to_usb_interface(hub->intfdev); -	usb_autopm_get_interface(intf); +	ret = usb_autopm_get_interface(intf); +	if (ret < 0) +		return ret; +  	set_bit(udev->portnum, hub->removed_bits);  	hub_port_logical_disconnect(hub, udev->portnum);  	usb_autopm_put_interface(intf); @@ -1866,7 +1870,7 @@ static int hub_probe(struct usb_interface *intf, const struct usb_device_id *id)  	if (id->driver_info & HUB_QUIRK_DISABLE_AUTOSUSPEND) {  		hub->quirk_disable_autosuspend = 1; -		usb_autopm_get_interface(intf); +		usb_autopm_get_interface_no_resume(intf);  	}  	if (hub_configure(hub, &desc->endpoint[0].desc) >= 0) |