[v2] usb: musb: gadget: Fix big-endian arch issue

From: Alexey Spirkov <hidden>
Date: 2018-08-03 09:41:13

Hi Andy,

Before my change: 

CHECK   drivers/usb/musb/musb_gadget_ep0.c
drivers/usb/musb/musb_gadget_ep0.c:85:26: warning: cast from restricted __le16
drivers/usb/musb/musb_gadget_ep0.c:220:58: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:227:48: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:237:52: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:251:52: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:310:56: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:313:60: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:303:52: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:303:52: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:303:52: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:303:52: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:303:52: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:303:52: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:402:52: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:415:52: warning: restricted __le16 degrades to integer
drivers/usb/musb/musb_gadget_ep0.c:540:22: warning: expression using sizeof(void)

After my change:

CHECK   drivers/usb/musb/musb_gadget_ep0.c
drivers/usb/musb/musb_gadget_ep0.c:539:22: warning: expression using sizeof(void)

PS: Thanks for hint about endian issues check!

Best regards,
Alexey Spirkov

-----Original Message-----
From: Andy Shevchenko <redacted> 
Sent: Friday, August 3, 2018 12:17 PM
To: Alexey Spirkov <redacted>
Cc: Bin Liu <b-liu@ti.com>; Greg Kroah-Hartman <gregkh@linuxfoundation.org>; linux-usb@vger.kernel.org; andrew@ncrmnt.org
Subject: Re: [PATCH v2] usb: musb: gadget: Fix big-endian arch issue

On Fri, Aug 3, 2018 at 12:03 PM, Alexey Spirkov [off-list ref] wrote:
Existing code is not applicable to big-endian machines ctrlrequest 
fields received in USB endian - i.e. in little-endian and should be 
converted to cpu endianness before usage.
-               epnum = (u8) ctrlrequest->wIndex;
+               epnum = (u8) le16_to_cpu(ctrlrequest->wIndex);
+       u16 reqval = le16_to_cpu(ctrlrequest->wValue);
+       u16 reqidx = le16_to_cpu(ctrlrequest->wIndex);
I'm wondering, if you run make with C=1 CF=-D__CHECK_ENDIAN__ before and after your change.


--
With Best Regards,
Andy Shevchenko
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help