[PATCH RESEND] usbtty: fix possible alignment issues
Seung-Woo Kim
sw0312.kim at samsung.com
Wed Jan 8 01:32:03 CET 2020
Hi,
On 2020년 01월 07일 22:22, Tom Rini wrote:
> On Tue, Jan 07, 2020 at 02:25:02PM +0900, Seung-Woo Kim wrote:
>
...
>> ---
>> drivers/serial/usbtty.c | 9 ++++++---
>> 1 file changed, 6 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/serial/usbtty.c b/drivers/serial/usbtty.c
>> index f1c1a260da..54e67dd0d1 100644
>> --- a/drivers/serial/usbtty.c
>> +++ b/drivers/serial/usbtty.c
>> @@ -48,6 +48,8 @@
>> #define CONFIG_USBD_DATA_INTERFACE_STR "Bulk Data Interface"
>> #define CONFIG_USBD_CTRL_INTERFACE_STR "Control Interface"
>>
>> +typedef struct { __le16 val; } __attribute__((aligned(16))) __le16_packed;
>> +
>> /*
>> * Buffers to hold input and output data
>> */
>> @@ -372,14 +374,15 @@ static int fill_buffer (circbuf_t * buf);
>> void usbtty_poll (void);
>>
>> /* utility function for converting char* to wide string used by USB */
>> -static void str2wide (char *str, u16 * wide)
>> +static void str2wide (char *str, void *wide)
>> {
>> int i;
>> + __le16_packed *tmp = wide;
>> for (i = 0; i < strlen (str) && str[i]; i++){
>> #if defined(__LITTLE_ENDIAN)
>> - wide[i] = (u16) str[i];
>> + tmp[i].val = (u16) str[i];
>> #elif defined(__BIG_ENDIAN)
>> - wide[i] = ((u16)(str[i])<<8);
>> + tmp[i].val = ((u16)(str[i])<<8);
>> #else
>> #error "__LITTLE_ENDIAN or __BIG_ENDIAN undefined"
>> #endif
>
> We generally don't want packed structs and do need to disable this
> warning in general. Is this _really_ a problem, or are we just
> silencing the compiler here? Thanks!
The change makes just silence for the warnings as like composite.c in
usb gadget.
Regards,
- Seung-Woo Kim
More information about the U-Boot
mailing list