Commit 925403f425a4a9c503f2fc295652647b1eb10d82
Committed by
Felipe Balbi
1 parent
519c6013d3
Exists in
smarc-imx_3.14.28_1.0.0_ga
and in
1 other branch
usb: renesas_usbhs: tidyup original usbhsx_for_each_xxx macro
Current usbhsx_for_each_xxx macro will read out-of-array's memory after last loop operation. It was not good C language operation, and the binary which was compiled by (at least) gcc 4.8.1 is broken This patch tidyup these issues Reported-by: Yusuke Goda <yusuke.goda.sx@renesas.com> Reviewed-by: Takashi Yoshii <takashi.yoshii.zj@renesas.com> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
Showing 3 changed files with 9 additions and 9 deletions Side-by-side Diff
drivers/usb/renesas_usbhs/mod_gadget.c
... | ... | @@ -77,9 +77,9 @@ |
77 | 77 | struct usbhsg_gpriv, mod) |
78 | 78 | |
79 | 79 | #define __usbhsg_for_each_uep(start, pos, g, i) \ |
80 | - for (i = start, pos = (g)->uep + i; \ | |
81 | - i < (g)->uep_size; \ | |
82 | - i++, pos = (g)->uep + i) | |
80 | + for ((i) = start; \ | |
81 | + ((i) < (g)->uep_size) && ((pos) = (g)->uep + (i)); \ | |
82 | + (i)++) | |
83 | 83 | |
84 | 84 | #define usbhsg_for_each_uep(pos, gpriv, i) \ |
85 | 85 | __usbhsg_for_each_uep(1, pos, gpriv, i) |
drivers/usb/renesas_usbhs/mod_host.c
... | ... | @@ -111,9 +111,9 @@ |
111 | 111 | container_of(usbhs_mod_get(priv, USBHS_HOST), struct usbhsh_hpriv, mod) |
112 | 112 | |
113 | 113 | #define __usbhsh_for_each_udev(start, pos, h, i) \ |
114 | - for (i = start, pos = (h)->udev + i; \ | |
115 | - i < USBHSH_DEVICE_MAX; \ | |
116 | - i++, pos = (h)->udev + i) | |
114 | + for ((i) = start; \ | |
115 | + ((i) < USBHSH_DEVICE_MAX) && ((pos) = (h)->udev + (i)); \ | |
116 | + (i)++) | |
117 | 117 | |
118 | 118 | #define usbhsh_for_each_udev(pos, hpriv, i) \ |
119 | 119 | __usbhsh_for_each_udev(1, pos, hpriv, i) |
drivers/usb/renesas_usbhs/pipe.h
... | ... | @@ -54,9 +54,9 @@ |
54 | 54 | * pipe list |
55 | 55 | */ |
56 | 56 | #define __usbhs_for_each_pipe(start, pos, info, i) \ |
57 | - for (i = start, pos = (info)->pipe + i; \ | |
58 | - i < (info)->size; \ | |
59 | - i++, pos = (info)->pipe + i) | |
57 | + for ((i) = start; \ | |
58 | + ((i) < (info)->size) && ((pos) = (info)->pipe + (i)); \ | |
59 | + (i)++) | |
60 | 60 | |
61 | 61 | #define usbhs_for_each_pipe(pos, priv, i) \ |
62 | 62 | __usbhs_for_each_pipe(1, pos, &((priv)->pipe_info), i) |