[U-Boot] [PATCH RFC V1 06/18] usb: gadget: config: fix unaligned access issues
Marek Vasut
marex at denx.de
Wed Jul 17 05:05:17 CEST 2013
Dear Troy Kisky,
Missing commit message :-(
> 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 f9163a8..a4cb5ad 100644
> --- a/drivers/usb/gadget/config.c
> +++ b/drivers/usb/gadget/config.c
> @@ -22,6 +22,7 @@
> */
>
> #include <common.h>
> +#include <asm/unaligned.h>
> #include <asm/errno.h>
> #include <linux/list.h>
> #include <linux/string.h>
> @@ -98,7 +99,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,
> @@ -112,7 +114,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;
> }
Best regards,
Marek Vasut
More information about the U-Boot
mailing list