mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
usb: fix ->update_hub_device() vs hdev->maxchild
Commit d8521afe35 "usb: assign default peer ports for root hubs"
delayed marking a hub valid (set hdev->maxchild) until it had been fully
configured and to enable the publishing of valid hubs to be serialized
by usb_port_peer_mutex.
However, xhci_update_hub_device() in some cases depends on
hdev->maxchild already being set. Do the minimal fix and move it after
the setting of hdev->maxchild.
Cc: Mathias Nyman <[email protected]>
Reported-by: Valdis Kletnieks <[email protected]>
Tested-by: Valdis Kletnieks <[email protected]>
Signed-off-by: Dan Williams <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
parent
7171511eae
commit
e3d9558082
1 changed files with 12 additions and 12 deletions
|
|
@ -1526,18 +1526,6 @@ static int hub_configure(struct usb_hub *hub,
|
|||
dev_dbg(hub_dev, "%umA bus power budget for each child\n",
|
||||
hub->mA_per_port);
|
||||
|
||||
/* Update the HCD's internal representation of this hub before khubd
|
||||
* starts getting port status changes for devices under the hub.
|
||||
*/
|
||||
if (hcd->driver->update_hub_device) {
|
||||
ret = hcd->driver->update_hub_device(hcd, hdev,
|
||||
&hub->tt, GFP_KERNEL);
|
||||
if (ret < 0) {
|
||||
message = "can't update HCD hub info";
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
ret = hub_hub_status(hub, &hubstatus, &hubchange);
|
||||
if (ret < 0) {
|
||||
message = "can't get hub status";
|
||||
|
|
@ -1593,6 +1581,18 @@ static int hub_configure(struct usb_hub *hub,
|
|||
if (ret < 0)
|
||||
goto fail;
|
||||
|
||||
/* Update the HCD's internal representation of this hub before khubd
|
||||
* starts getting port status changes for devices under the hub.
|
||||
*/
|
||||
if (hcd->driver->update_hub_device) {
|
||||
ret = hcd->driver->update_hub_device(hcd, hdev,
|
||||
&hub->tt, GFP_KERNEL);
|
||||
if (ret < 0) {
|
||||
message = "can't update HCD hub info";
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
usb_hub_adjust_deviceremovable(hdev, hub->descriptor);
|
||||
|
||||
hub_activate(hub, HUB_INIT);
|
||||
|
|
|
|||
Loading…
Reference in a new issue