|
@@ -1336,7 +1336,13 @@ static int hub_configure(struct usb_hub *hub,
|
|
|
if (ret < 0) {
|
|
|
message = "can't read hub descriptor";
|
|
|
goto fail;
|
|
|
- } else if (hub->descriptor->bNbrPorts > USB_MAXCHILDREN) {
|
|
|
+ }
|
|
|
+
|
|
|
+ maxchild = USB_MAXCHILDREN;
|
|
|
+ if (hub_is_superspeed(hdev))
|
|
|
+ maxchild = min_t(unsigned, maxchild, USB_SS_MAXPORTS);
|
|
|
+
|
|
|
+ if (hub->descriptor->bNbrPorts > maxchild) {
|
|
|
message = "hub has too many ports!";
|
|
|
ret = -ENODEV;
|
|
|
goto fail;
|