Re: [PATCH 5/6] USB: hub: fix SS max number of ports

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 10 May 2017, Johan Hovold wrote:

> 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")
> Signed-off-by: Johan Hovold <johan@xxxxxxxxxx>
> ---

Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>

>  drivers/usb/core/hub.c        | 8 +++++++-
>  include/uapi/linux/usb/ch11.h | 3 +++
>  2 files changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
> index f77a4ebde7d5..b8bb20d7acdb 100644
> --- a/drivers/usb/core/hub.c
> +++ b/drivers/usb/core/hub.c
> @@ -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;
> diff --git a/include/uapi/linux/usb/ch11.h b/include/uapi/linux/usb/ch11.h
> index 361297e96f58..576c704e3fb8 100644
> --- a/include/uapi/linux/usb/ch11.h
> +++ b/include/uapi/linux/usb/ch11.h
> @@ -22,6 +22,9 @@
>   */
>  #define USB_MAXCHILDREN		31
>  
> +/* See USB 3.1 spec Table 10-5 */
> +#define USB_SS_MAXPORTS		15
> +
>  /*
>   * Hub request types
>   */
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux