vc4: Fix termination of the initial scan for branch targets.
authorEric Anholt <eric@anholt.net>
Thu, 20 Oct 2016 23:48:12 +0000 (16:48 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 21 Oct 2016 21:12:06 +0000 (14:12 -0700)
commit1d7874fa7b4683cba8f8bc78c139402b989dd9df
tree50e419e79e478893e4f062a5f5c35c3b6a6300b8
parent3f05fc62f924c051bdb883482452fb37650d5768
vc4: Fix termination of the initial scan for branch targets.

The loop is scanning until the original max_ip (size of the BO), but we
want to not examine any code after the PROG_END's delay slots.  There was
a block trying to do that, except that we had some early continue
statements if the signal wasn't a PROG_END or a BRANCH.

The failure mode would be that a valid shader is rejected because some
undefined memory after the PROG_END slots is parsed as a branch and the
rest of its setup is illegal.  I haven't seen this in the wild, but
valgrind was complaining and the new userland simulator code started
triggering it.
src/gallium/drivers/vc4/kernel/vc4_validate_shaders.c