forked from Minki/linux
[media] v4l2-ctrls.c: allow empty control handlers
If you have a control handler that does not contain any controls, then currently calling VIDIOC_G/S/TRY_EXT_CTRLS with count == 0 will return -EINVAL in the class_check() function. This is not correct, there is no reason why this should return an error. The purpose of setting count to 0 is to test if the ioctl can mix controls from different control classes. And this is possible. The fact that there are not actually any controls defined is another matter that is unrelated to this test. This caused v4l2-compliance to fail, so that is fixed with this patch applied. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Reported-by: Dave Stevenson <dave.stevenson@raspberrypi.org> Tested-by: Dave Stevenson <dave.stevenson@raspberrypi.org> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
5b2c8da1b0
commit
cecfe9b8a5
@ -2818,7 +2818,7 @@ static int prepare_ext_ctrls(struct v4l2_ctrl_handler *hdl,
|
||||
static int class_check(struct v4l2_ctrl_handler *hdl, u32 which)
|
||||
{
|
||||
if (which == 0 || which == V4L2_CTRL_WHICH_DEF_VAL)
|
||||
return list_empty(&hdl->ctrl_refs) ? -EINVAL : 0;
|
||||
return 0;
|
||||
return find_ref_lock(hdl, which | 1) ? 0 : -EINVAL;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user