From: Dr. David Alan Gilbert Date: Sun, 24 Oct 2010 16:33:09 +0000 (-0300) Subject: [media] Guard a divide in v4l1 compat layer X-Git-Tag: firefly_0821_release~7613^2~3587^2~2 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=910f5f05f99c1ffbb484c4e6eb2a460e7a08e2d7;p=firefly-linux-kernel-4.4.55.git [media] Guard a divide in v4l1 compat layer Hi, I managed to trigger a divide by 0 in the v4l compat code with the mem2mem test module; I suspect perhaps it shouldn't have been returning a 0 pixel wide picture, but either way it seems right to guard this divide by 0 in the compatibility layer. Tested on 2.6.36 (ubuntu build, but the code in this is the same as upstream), but ***not tested with a real video device***. Signed-off-by: Dr. David Alan Gilbert cc: stable.kernel.org Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/video/v4l1-compat.c b/drivers/media/video/v4l1-compat.c index 0c2105ca611e..d4ac751036a2 100644 --- a/drivers/media/video/v4l1-compat.c +++ b/drivers/media/video/v4l1-compat.c @@ -645,9 +645,16 @@ static noinline long v4l1_compat_get_picture( goto done; } - pict->depth = ((fmt->fmt.pix.bytesperline << 3) - + (fmt->fmt.pix.width - 1)) - / fmt->fmt.pix.width; + if (fmt->fmt.pix.width) + { + pict->depth = ((fmt->fmt.pix.bytesperline << 3) + + (fmt->fmt.pix.width - 1)) + / fmt->fmt.pix.width; + } else { + err = -EINVAL; + goto done; + } + pict->palette = pixelformat_to_palette( fmt->fmt.pix.pixelformat); done: