Re: [PATCH v2 2/6] USB: usbip: fix nonconforming hub descriptor

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

 



On 05/10/2017 10:18 AM, Johan Hovold wrote:
> Fix up the root-hub descriptor to accommodate the variable-length
> DeviceRemovable and PortPwrCtrlMask fields, while marking all ports as
> removable (and leaving the reserved bit zero unset).
> 
> Also add a build-time constraint on VHCI_HC_PORTS which must never be
> greater than USB_MAXCHILDREN (but this was only enforced through a
> KConfig constant).
> 
> This specifically fixes the descriptor layout whenever VHCI_HC_PORTS is
> greater than seven (default is 8).
> 
> Fixes: 04679b3489e0 ("Staging: USB/IP: add client driver")
> Cc: Takahiro Hirofuchi <hirofuchi@xxxxxxxxxxxxxxxxxxxxx>
> Cc: Valentina Manea <valentina.manea.m@xxxxxxxxx>
> Cc: Shuah Khan <shuah@xxxxxxxxxx>
> Signed-off-by: Johan Hovold <johan@xxxxxxxxxx>

Change looks reasonable to me. Why did you send v2 so quickly.
v1 and v2 look identical to me. Please mention the changes if any
made to v1 when you send v2 in the future. It will make easier
for reviewers.

In any case, here is my Ack for Greg to take this patch:

Acked-by: Shuah Khan <shuahkh@xxxxxxxxxxxxxxx>

thanks,
-- Shuah

> ---
>  drivers/usb/usbip/vhci_hcd.c | 11 ++++++++---
>  1 file changed, 8 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c
> index 5d8b2c261940..0585078638db 100644
> --- a/drivers/usb/usbip/vhci_hcd.c
> +++ b/drivers/usb/usbip/vhci_hcd.c
> @@ -235,14 +235,19 @@ static int vhci_hub_status(struct usb_hcd *hcd, char *buf)
>  
>  static inline void hub_descriptor(struct usb_hub_descriptor *desc)
>  {
> +	int width;
> +
>  	memset(desc, 0, sizeof(*desc));
>  	desc->bDescriptorType = USB_DT_HUB;
> -	desc->bDescLength = 9;
>  	desc->wHubCharacteristics = cpu_to_le16(
>  		HUB_CHAR_INDV_PORT_LPSM | HUB_CHAR_COMMON_OCPM);
> +
>  	desc->bNbrPorts = VHCI_HC_PORTS;
> -	desc->u.hs.DeviceRemovable[0] = 0xff;
> -	desc->u.hs.DeviceRemovable[1] = 0xff;
> +	BUILD_BUG_ON(VHCI_HC_PORTS > USB_MAXCHILDREN);
> +	width = desc->bNbrPorts / 8 + 1;
> +	desc->bDescLength = USB_DT_HUB_NONVAR_SIZE + 2 * width;
> +	memset(&desc->u.hs.DeviceRemovable[0], 0, width);
> +	memset(&desc->u.hs.DeviceRemovable[width], 0xff, width);
>  }
>  
>  static int vhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue,
> 

--
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