diff --git a/drivers/usb/gadget/udc/core.c b/drivers/usb/gadget/udc/core.c index e1e243e52a2d..7a00af1f9624 100644 --- a/drivers/usb/gadget/udc/core.c +++ b/drivers/usb/gadget/udc/core.c @@ -730,10 +730,11 @@ int usb_gadget_disconnect(struct usb_gadget *gadget) } ret = gadget->ops->pullup(gadget, 0); - if (!ret) { + if (!ret) gadget->connected = 0; + + if (gadget->udc->driver) gadget->udc->driver->disconnect(gadget); - } out: trace_usb_gadget_disconnect(gadget, ret);