[Mesa-dev] [PATCH 08/11] st/nine: Fix setting of the shift modifier in nine_shader

Ilia Mirkin imirkin at alum.mit.edu
Sun Nov 23 21:42:50 PST 2014


On Sun, Nov 23, 2014 at 5:40 PM, David Heidelberg <david at ixit.cz> wrote:
> From: Axel Davy <axel.davy at ens.fr>
>
> It is an sint_4, but it was stored in a uint_8...
> The code using it was acting as if it was signed.
>
> Problem found thanks to Coverity
>
> Cc: "10.4" <mesa-stable at lists.freedesktop.org>
> Tested-by: David Heidelberg <david at ixit.cz>
> Signed-off-by: Axel Davy <axel.davy at ens.fr>

Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>

> ---
>  src/gallium/state_trackers/nine/nine_shader.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/state_trackers/nine/nine_shader.c b/src/gallium/state_trackers/nine/nine_shader.c
> index cc027b4..7d5622b 100644
> --- a/src/gallium/state_trackers/nine/nine_shader.c
> +++ b/src/gallium/state_trackers/nine/nine_shader.c
> @@ -239,7 +239,7 @@ struct sm1_dst_param
>      BYTE file;
>      BYTE mask;
>      BYTE mod;
> -    BYTE shift; /* sint4 */
> +    int8_t shift; /* sint4 */
>      BYTE type;
>  };
>
> @@ -2535,6 +2535,7 @@ sm1_parse_get_param(struct shader_translator *tx, DWORD *reg, DWORD *rel)
>  static void
>  sm1_parse_dst_param(struct sm1_dst_param *dst, DWORD tok)
>  {
> +    uint8_t shift;
>      dst->file =
>          (tok & D3DSP_REGTYPE_MASK)  >> D3DSP_REGTYPE_SHIFT |
>          (tok & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2;
> @@ -2543,7 +2544,8 @@ sm1_parse_dst_param(struct sm1_dst_param *dst, DWORD tok)
>      dst->rel = NULL;
>      dst->mask = (tok & NINED3DSP_WRITEMASK_MASK) >> NINED3DSP_WRITEMASK_SHIFT;
>      dst->mod = (tok & D3DSP_DSTMOD_MASK) >> D3DSP_DSTMOD_SHIFT;
> -    dst->shift = (tok & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT;
> +    shift = (tok & D3DSP_DSTSHIFT_MASK) >> D3DSP_DSTSHIFT_SHIFT;
> +    dst->shift = (shift & 0x8) ? -(shift & 0x7) : shift & 0x7;
>  }
>
>  static void
> --
> 2.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