Re: usb: gadget: dummy_hcd: add support for USB_DT_BOS on rh

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

 



On Mon, Sep 10, 2012 at 05:21:39PM +0300, Dan Carpenter wrote:
> Hello Sebastian Andrzej Siewior,
> 
> The patch 3b9c1c5ba7a95: "usb: gadget: dummy_hcd: add support for
> USB_DT_BOS on rh" from Oct 19, 2012, leads to the following warning:
> drivers/usb/gadget/dummy_hcd.c:2038 dummy_hub_control()
> 	 error: memcpy() 'buf' too small (15 vs 16)
> 
>   2031          case DeviceRequest | USB_REQ_GET_DESCRIPTOR:
>   2032                  if (hcd->speed != HCD_USB3)
>   2033                          goto error;
>   2034  
>   2035                  if ((wValue >> 8) != USB_DT_BOS)
>   2036                          goto error;
>   2037  
>   2038                  memcpy(buf, &usb3_bos_desc, sizeof(usb3_bos_desc));
>                                                     ^^^^^^^^^^^^^^^^^^^^^^
>   2039                  retval = sizeof(usb3_bos_desc);
>   2040                  break;
> 
> 
> buf is declared in rh_call_control() as:
>        u8              tbuf[USB_DT_BOS_SIZE + USB_DT_USB_SS_CAP_SIZE]
>                 __attribute__((aligned(4)));

What kind of sorcery is this? This sorcery is off by one.

> The new code might work because of the alignment, but it's not
> beautiful.

Both structs are defined as packed. The first struct (usb_bos_descriptor) has
5 bytes, the second (usb_ss_cap_descriptor) has the bytes. This leads us to
the following equation:
  5 + 10 = 15

Regadging beautiful: Alan introduced it in ("USB: Revised fixups for root-hub
message handler") [0]. Sarah extended this to 15 bytes for USB3 that means
xhci code is also on the edge. I'm innocent here. You can only blame me for
looking the other way while adding BOS descriptor to dummy.

[0] http://www.mail-archive.com/linux-usb-devel@xxxxxxxxxxxxxxxxxxxxx/msg33457.html

> regards,
> dan carpenter

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