lkml.org 
[lkml]   [2017]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Date
    Subject[PATCH 3.16 047/233] USB: hub: fix SS max number of ports
    3.16.48-rc1 review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Johan Hovold <johan@kernel.org>

    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>
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    ---
    drivers/usb/core/hub.c | 8 +++++++-
    include/uapi/linux/usb/ch11.h | 3 +++
    2 files changed, 10 insertions(+), 1 deletion(-)

    --- a/drivers/usb/core/hub.c
    +++ b/drivers/usb/core/hub.c
    @@ -1316,7 +1316,13 @@ static int hub_configure(struct usb_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;
    --- 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
    */
    \
     
     \ /
      Last update: 2017-09-10 01:25    [W:2.600 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site