diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index bbcfa63d0233bfb07fbcb12de0234aae272d8b59..eb24ec0e160d40de2802be4e31f3dd03cd449753 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -5823,7 +5823,10 @@ int usb_reset_device(struct usb_device *udev) cintf->needs_binding = 1; } } - usb_unbind_and_rebind_marked_interfaces(udev); + + /* If the reset failed, hub_wq will unbind drivers later */ + if (ret == 0) + usb_unbind_and_rebind_marked_interfaces(udev); } usb_autosuspend_device(udev);