|
@@ -1066,6 +1066,9 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
|
|
|
|
|
|
portstatus = portchange = 0;
|
|
portstatus = portchange = 0;
|
|
status = hub_port_status(hub, port1, &portstatus, &portchange);
|
|
status = hub_port_status(hub, port1, &portstatus, &portchange);
|
|
|
|
+ if (status)
|
|
|
|
+ goto abort;
|
|
|
|
+
|
|
if (udev || (portstatus & USB_PORT_STAT_CONNECTION))
|
|
if (udev || (portstatus & USB_PORT_STAT_CONNECTION))
|
|
dev_dbg(&port_dev->dev, "status %04x change %04x\n",
|
|
dev_dbg(&port_dev->dev, "status %04x change %04x\n",
|
|
portstatus, portchange);
|
|
portstatus, portchange);
|
|
@@ -1198,7 +1201,7 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type)
|
|
|
|
|
|
/* Scan all ports that need attention */
|
|
/* Scan all ports that need attention */
|
|
kick_hub_wq(hub);
|
|
kick_hub_wq(hub);
|
|
-
|
|
|
|
|
|
+ abort:
|
|
if (type == HUB_INIT2 || type == HUB_INIT3) {
|
|
if (type == HUB_INIT2 || type == HUB_INIT3) {
|
|
/* Allow autosuspend if it was suppressed */
|
|
/* Allow autosuspend if it was suppressed */
|
|
disconnected:
|
|
disconnected:
|