Re: [PATCH] media: pispbe: Protect against left-shift wrap in V4L2_COLORSPACE_MASK()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Naush

On Mon, Jul 15, 2024 at 11:24:25AM GMT, Naushir Patuck wrote:
> Ensure that the user requested colorspace value does not wrap when
> using the V4L2_COLORSPACE_MASK() macro. If the requested colorspace
> value >= BIT_PER_LONG, revert to the default colorspace for the given
> format.
>
> Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
> Signed-off-by: Naushir Patuck <naush@xxxxxxxxxxxxxxx>

Thanks for handling this

> ---
>  drivers/media/platform/raspberrypi/pisp_be/pisp_be.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
> index e74df5b116dc..bd5d77c691d3 100644
> --- a/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
> +++ b/drivers/media/platform/raspberrypi/pisp_be/pisp_be.c
> @@ -1124,8 +1124,9 @@ static void pispbe_try_format(struct v4l2_format *f, struct pispbe_node *node)
>  	 * not supported. This also catches the case when the "default"
>  	 * colour space was requested (as that's never in the mask).
>  	 */
> -	if (!(V4L2_COLORSPACE_MASK(f->fmt.pix_mp.colorspace) &
> -	    fmt->colorspace_mask))
> +	if (f->fmt.pix_mp.colorspace >= BITS_PER_LONG ||
> +	    !(V4L2_COLORSPACE_MASK(f->fmt.pix_mp.colorspace) &
> +	      fmt->colorspace_mask))
>  		f->fmt.pix_mp.colorspace = fmt->colorspace_default;

Isn't it better handled in the macro definition itself so that future
usages of the V4L2_COLORSPACE_MASK() macro won't need to be protected
like this one ?

Would this silence the smatch warning ?

-#define V4L2_COLORSPACE_MASK(colorspace) BIT(colorspace)
+#define V4L2_COLORSPACE_MASK(c)        BIT((c) < V4L2_COLORSPACE_LAST ? \
+                                           (c) : V4L2_COLORSPACE_LAST)


>
>  	/* In all cases, we only support the defaults for these: */
> --
> 2.34.1
>




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux