From: Hans Verkuil Date: Sat, 14 Mar 2015 16:28:25 +0000 (-0300) Subject: [media] v4l2-ioctl: allow all controls if ctrl_class == 0 X-Git-Tag: firefly_0821_release~176^2~795^2~1202 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9b239b22df3ced4629af97e7edda558f1e7531b6;p=firefly-linux-kernel-4.4.55.git [media] v4l2-ioctl: allow all controls if ctrl_class == 0 The check_ext_ctrls() function in v4l2-ioctl.c checks if all controls in the control array are from the same control class as c->ctrl_class. However, that check should only be done if c->ctrl_class != 0. A 0 value means that this restriction does not apply. So return 1 (OK) if c->ctrl_class == 0. Found by running v4l2-compliance on the uvc driver. Signed-off-by: Hans Verkuil Acked-by: Sakari Ailus Signed-off-by: Mauro Carvalho Chehab --- diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c index d2dc7e557c35..aa407cb5f830 100644 --- a/drivers/media/v4l2-core/v4l2-ioctl.c +++ b/drivers/media/v4l2-core/v4l2-ioctl.c @@ -901,6 +901,8 @@ static int check_ext_ctrls(struct v4l2_ext_controls *c, int allow_priv) */ if (!allow_priv && c->ctrl_class == V4L2_CID_PRIVATE_BASE) return 0; + if (c->ctrl_class == 0) + return 1; /* Check that all controls are from the same control class. */ for (i = 0; i < c->count; i++) { if (V4L2_CTRL_ID2CLASS(c->controls[i].id) != c->ctrl_class) {