]> git.sur5r.net Git - u-boot/commitdiff
imx: ventana: Avoid undefined behaviour
authorThierry Reding <treding@nvidia.com>
Fri, 22 Aug 2014 07:46:35 +0000 (09:46 +0200)
committerStefano Babic <sbabic@denx.de>
Tue, 9 Sep 2014 14:26:33 +0000 (16:26 +0200)
The leds array within struct ventana has space for 3 elements, but the
setup_board_gpio() function tries to set up 4 GPIOs for LEDs. Recent
versions of GCC complain about that:

board/gateworks/gw_ventana/gw_ventana.c: In function 'setup_board_gpio':
board/gateworks/gw_ventana/gw_ventana.c:987:27: warning: iteration 3u invokes undefined behavior [-Waggressive-loop-optimizations]
   if (gpio_cfg[board].leds[i])
   ^
board/gateworks/gw_ventana/gw_ventana.c:986:2: note: containing loop
  for (i = 0; i < 4; i++) {
  ^

Fix this by making the upper bound of the loop match the array size.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Acked-by: Tim Harvey <tharvey@gateworks.com>
board/gateworks/gw_ventana/gw_ventana.c

index 9a1b6dd9ce3173ddad3511cc626d57f35903fa59..8d086f84abea5381b185d70558de0cc633b3d82f 100644 (file)
@@ -1061,7 +1061,7 @@ static void setup_board_gpio(int board)
 #endif
 
        /* turn off (active-high) user LED's */
-       for (i = 0; i < 4; i++) {
+       for (i = 0; i < ARRAY_SIZE(gpio_cfg[board].leds); i++) {
                if (gpio_cfg[board].leds[i])
                        gpio_direction_output(gpio_cfg[board].leds[i], 1);
        }