etnaviv: Avoid infinite loop in find_frame()
authorChristian Gmeiner <christian.gmeiner@gmail.com>
Tue, 31 Jan 2017 08:10:27 +0000 (09:10 +0100)
committerChristian Gmeiner <christian.gmeiner@gmail.com>
Tue, 31 Jan 2017 08:19:25 +0000 (09:19 +0100)
Use of unsigned loop control variable with '>= 0' would lead
to infinite loop.

Reported by clang:

etnaviv_compiler.c:1024:39: warning: comparison of unsigned expression
>= 0 is always true [-Wtautological-compare]
   for (unsigned sp = c->frame_sp; sp >= 0; sp--)
                                   ~~ ^  ~

v2: Simply use the same datatype as c->frame_sp is using.

CC: <mesa-stable@lists.freedesktop.org>
Reported-by: Rhys Kidd <rhyskidd@gmail.com>
Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Rhys Kidd <rhyskidd@gmail.com>
src/gallium/drivers/etnaviv/etnaviv_compiler.c

index 59e1452d80132605b86489feaae6a9a0619c8eec..dc9af57bcf2f0995433206f14bc08694d835fdca 100644 (file)
@@ -1021,7 +1021,7 @@ label_mark_use(struct etna_compile *c, struct etna_compile_label *label)
 static struct etna_compile_frame *
 find_frame(struct etna_compile *c, enum etna_compile_frame_type type)
 {
-   for (unsigned sp = c->frame_sp; sp >= 0; sp--)
+   for (int sp = c->frame_sp; sp >= 0; sp--)
       if (c->frame_stack[sp].type == type)
          return &c->frame_stack[sp];