diff --git a/[refs] b/[refs] index 424583755745..bf9e89afbe1e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f150fa1afbf69a87f54752579ff2bb769aad88b3 +refs/heads/master: 6cd132015d92356b1287f6f3377a3ad955b6cf2f diff --git a/trunk/drivers/usb/core/hub.c b/trunk/drivers/usb/core/hub.c index e65881899c8f..ff066edf4dca 100644 --- a/trunk/drivers/usb/core/hub.c +++ b/trunk/drivers/usb/core/hub.c @@ -1636,6 +1636,10 @@ int usb_new_device(struct usb_device *udev) { int err; + /* Increment the parent's count of unsuspended children */ + if (udev->parent) + usb_autoresume_device(udev->parent); + usb_detect_quirks(udev); /* Determine quirks */ err = usb_configure_device(udev); /* detect & probe dev/intfs */ if (err < 0) @@ -1644,9 +1648,8 @@ int usb_new_device(struct usb_device *udev) udev->dev.devt = MKDEV(USB_DEVICE_MAJOR, (((udev->bus->busnum-1) * 128) + (udev->devnum-1))); - /* Increment the parent's count of unsuspended children */ - if (udev->parent) - usb_autoresume_device(udev->parent); + /* Tell the world! */ + announce_device(udev); /* Register the device. The device driver is responsible * for adding the device files to sysfs and for configuring @@ -1660,13 +1663,11 @@ int usb_new_device(struct usb_device *udev) /* put device-specific files into sysfs */ usb_create_sysfs_dev_files(udev); - - /* Tell the world! */ - announce_device(udev); return err; fail: usb_set_device_state(udev, USB_STATE_NOTATTACHED); + usb_stop_pm(udev); return err; }