[U-Boot] [PATCH V2 06/20] usb: gadget: config: fix unaligned access issues
Troy Kisky
troy.kisky at boundarydevices.com
Fri Aug 2 01:14:15 CEST 2013
On 8/1/2013 3:55 PM, Marek Vasut wrote:
> 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
>
Yes, will do a V3 to clear things up.
Troy
I
More information about the U-Boot
mailing list