[U-Boot] [PATCH V2 06/20] usb: gadget: config: fix unaligned access issues

Troy Kisky troy.kisky at boundarydevices.com
Fri Aug 2 00:47:22 CEST 2013


On 8/1/2013 3:18 PM, Troy Kisky wrote:
> Signed-off-by: Troy Kisky <troy.kisky at boundarydevices.com>
> ---
>   drivers/usb/gadget/config.c | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/gadget/config.c b/drivers/usb/gadget/config.c
> index f563afe..014a679 100644
> --- a/drivers/usb/gadget/config.c
> +++ b/drivers/usb/gadget/config.c
> @@ -10,6 +10,7 @@
>    */
>   
>   #include <common.h>
> +#include <asm/unaligned.h>
>   #include <asm/errno.h>
>   #include <linux/list.h>
>   #include <linux/string.h>
> @@ -86,7 +87,8 @@ int usb_gadget_config_buf(
>   	/* config descriptor first */
>   	if (length < USB_DT_CONFIG_SIZE || !desc)
>   		return -EINVAL;
> -	*cp = *config;
> +	/* config need not be aligned */
> +	memcpy(cp, config, sizeof(*cp));
>   
>   	/* then interface/endpoint/class/vendor/... */
>   	len = usb_descriptor_fillbuf(USB_DT_CONFIG_SIZE + (u8 *)buf,
> @@ -100,7 +102,7 @@ int usb_gadget_config_buf(
>   	/* patch up the config descriptor */
>   	cp->bLength = USB_DT_CONFIG_SIZE;
>   	cp->bDescriptorType = USB_DT_CONFIG;
> -	cp->wTotalLength = cpu_to_le16(len);
> +	put_unaligned_le16(len, &cp->wTotalLength);
>   	cp->bmAttributes |= USB_CONFIG_ATT_ONE;
>   	return len;
>   }
Sorry folks, I forgot to delete old patches when I rebased to put
Stefano patches together, please ignore this one.

Troy


More information about the U-Boot mailing list