Commit f903a20d1fc0e99741da671095c6b9ac7c13c7ae
Committed by
Marek Vasut
1 parent
4edcf0a3df
Exists in
master
and in
53 other branches
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( |