[Mesa-dev] [PATCH] st/mesa: bound the sampler count before calling into the driver.

Jose Fonseca jfonseca at vmware.com
Sat Mar 9 12:30:00 PST 2013


Looks a sensible thing to do.

Reviewed-by: Jose Fonseca <jfonseca at vmware.com>

Any insight how the caller can be fixed so that this doesn't happen?

Jose

----- Original Message -----
> With the current code, the sampler count can become higher than
> PIPE_MAX_SAMPLERS and once it gets to the driver this can lead to
> miscellaneous crashes and memory corruptions.
> 
> Although this is taken care of in debug mode with an assert,
> there is still a way to cause a crash/overflow in release mode.
> 
> So instead, we bound the number of samplers in the state tracker.
> ---
>  src/mesa/state_tracker/st_atom_texture.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/src/mesa/state_tracker/st_atom_texture.c
> b/src/mesa/state_tracker/st_atom_texture.c
> index fc2d690..bcd5856 100644
> --- a/src/mesa/state_tracker/st_atom_texture.c
> +++ b/src/mesa/state_tracker/st_atom_texture.c
> @@ -311,6 +311,7 @@ update_textures(struct st_context *st,
>      */
>     new_count = MAX2(*num_textures, old_max);
>     assert(new_count <= max_units);
> +   new_count = MIN2(new_count, max_units);
>  
>     cso_set_sampler_views(st->cso_context,
>                           shader_stage,
> --
> 1.8.1.3
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 


More information about the mesa-dev mailing list