Commit f903a20d1fc0e99741da671095c6b9ac7c13c7ae

Authored by Vivek Gautam
Committed by Marek Vasut
1 parent 4edcf0a3df

usb: Use get_unaligned() in usb_endpoint_maxp() for wMaxPacketSize

Use unaligned access to fetch wMaxPacketSize in usb_endpoint_maxp()
api.
In its absence we see following data abort message:
==============================================================
data abort

    MAYBE you should read doc/README.arm-unaligned-accesses

pc : [<bf794e24>]          lr : [<bf794e1c>]
sp : bf37c7b0  ip : 0000002f     fp : 00000000
r10: 00000000  r9 : 00000002     r8 : bf37fecc
r7 : 00000001  r6 : bf7d8931     r5 : bf7d891c  r4 : bf7d8800
r3 : bf7d65b0  r2 : 00000002     r1 : bf7d65b4  r0 : 00000027
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

resetting ...
==============================================================

Signed-off-by: Vivek Gautam <gautam.vivek@samsung.com>
Cc: Ilya Yanok <ilya.yanok@cogentembedded.com>
Cc: Marek Vasut <marex@denx.de>

Showing 1 changed file with 2 additions and 1 deletions Side-by-side Diff

include/linux/usb/ch9.h
... ... @@ -35,6 +35,7 @@
35 35  
36 36 #include <linux/types.h> /* __u8 etc */
37 37 #include <asm/byteorder.h> /* le16_to_cpu */
  38 +#include <asm/unaligned.h> /* get_unaligned() */
38 39  
39 40 /*-------------------------------------------------------------------------*/
40 41  
... ... @@ -596,7 +597,7 @@
596 597 */
597 598 static inline int usb_endpoint_maxp(const struct usb_endpoint_descriptor *epd)
598 599 {
599   - return __le16_to_cpu(epd->wMaxPacketSize);
  600 + return __le16_to_cpu(get_unaligned(&epd->wMaxPacketSize));
600 601 }
601 602  
602 603 static inline int usb_endpoint_interrupt_type(