On Wed, Mar 12, 2014 at 1:24 PM, Emil Velikov <emil.l.veli...@gmail.com> wrote:
> Commit 3805a864b1d(nv50: assert before trying to out-of-bounds access
> samplers) introduced a series of asserts as a precausion of a previous
> illegal memory access.
>
> Although it failed to encapsulate loop within nv50_sampler_state_delete
> effectively failing to clear the sampler state, apart from exadurating
> the illegal memory access issue.
>
> Fixes gcc warning "array subscript is above array bounds" and
> "Nesting level does not match indentation" and "Out-of-bounds read"
> defects reported by Coverity.
>
> Cc: "10.1" <mesa-sta...@lists.freedesktop.org>
> Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com>

Reviewed-by: Ilia Mirkin <imir...@alum.mit.edu>

> ---
>  src/gallium/drivers/nouveau/nv50/nv50_state.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/src/gallium/drivers/nouveau/nv50/nv50_state.c 
> b/src/gallium/drivers/nouveau/nv50/nv50_state.c
> index 862636b..647c01f 100644
> --- a/src/gallium/drivers/nouveau/nv50/nv50_state.c
> +++ b/src/gallium/drivers/nouveau/nv50/nv50_state.c
> @@ -558,11 +558,12 @@ nv50_sampler_state_delete(struct pipe_context *pipe, 
> void *hwcso)
>  {
>     unsigned s, i;
>
> -   for (s = 0; s < 3; ++s)
> +   for (s = 0; s < 3; ++s) {
>        assert(nv50_context(pipe)->num_samplers[s] <= PIPE_MAX_SAMPLERS);
>        for (i = 0; i < nv50_context(pipe)->num_samplers[s]; ++i)
>           if (nv50_context(pipe)->samplers[s][i] == hwcso)
>              nv50_context(pipe)->samplers[s][i] = NULL;
> +   }
>
>     nv50_screen_tsc_free(nv50_context(pipe)->screen, nv50_tsc_entry(hwcso));
>
> --
> 1.9.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to