USB: hub: fix SS max number of ports
commit 93491ced3c87c94b12220dbac0527e1356702179 upstream. Add define for the maximum number of ports on a SuperSpeed hub as per USB 3.1 spec Table 10-5, and use it when verifying the retrieved hub descriptor. This specifically avoids benign attempts to update the DeviceRemovable mask for non-existing ports (should we get that far). Fixes: dbe79bbe9dcb ("USB 3.0 Hub Changes") Acked-by: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
cb53a4e03b
commit
12bfbe157d
@ -1334,7 +1334,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;
|
||||
|
@ -22,6 +22,9 @@
|
||||
*/
|
||||
#define USB_MAXCHILDREN 31
|
||||
|
||||
/* See USB 3.1 spec Table 10-5 */
|
||||
#define USB_SS_MAXPORTS 15
|
||||
|
||||
/*
|
||||
* Hub request types
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user