[U-Boot] [PATCH V2 06/20] usb: gadget: config: fix unaligned access issues
Marek Vasut
marex at denx.de
Fri Aug 2 00:55:22 CEST 2013
Dear Troy Kisky,
> 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.
Repost the series please, this is really hard to review.
Best regards,
Marek Vasut
More information about the U-Boot
mailing list