V4L/DVB (5089): Pvrusb2: V4L EXT_CTRLS fixup
authorMike Isely <isely@pobox.com>
Sat, 20 Jan 2007 03:30:23 +0000 (00:30 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Wed, 21 Feb 2007 15:34:40 +0000 (13:34 -0200)
Attempts to enumerate or operate on a group of EXT_CTRLS where the
group size is zero is OK; don't fail on such operations.  At least one
application uses this to probe for the existence of this API so let it
succeed.

Signed-off-by: Mike Isely <isely@pobox.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/pvrusb2/pvrusb2-v4l2.c

index 5b1260c..91c4225 100644 (file)
@@ -636,6 +636,7 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct file *file,
                struct v4l2_ext_control *ctrl;
                unsigned int idx;
                int val;
+               ret = 0;
                for (idx = 0; idx < ctls->count; idx++) {
                        ctrl = ctls->controls + idx;
                        ret = pvr2_ctrl_get_value(
@@ -658,6 +659,7 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct file *file,
                        (struct v4l2_ext_controls *)arg;
                struct v4l2_ext_control *ctrl;
                unsigned int idx;
+               ret = 0;
                for (idx = 0; idx < ctls->count; idx++) {
                        ctrl = ctls->controls + idx;
                        ret = pvr2_ctrl_set_value(
@@ -680,6 +682,7 @@ static int pvr2_v4l2_do_ioctl(struct inode *inode, struct file *file,
                unsigned int idx;
                /* For the moment just validate that the requested control
                   actually exists. */
+               ret = 0;
                for (idx = 0; idx < ctls->count; idx++) {
                        ctrl = ctls->controls + idx;
                        pctl = pvr2_hdw_get_ctrl_v4l(hdw,ctrl->id);