V4L/DVB (8083): videodev: zero fields for ENCODER_CMD and VIDIOC_G_SLICED_VBI_CAP
authorHans Verkuil <hverkuil@xs4all.nl>
Sat, 21 Jun 2008 11:57:42 +0000 (08:57 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Sun, 20 Jul 2008 10:10:48 +0000 (07:10 -0300)
This avoids the need of memsets in the ivtv/cx18 drivers.

Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/videodev.c

index 9c539eb33811d04533137b3c0f94731c425e5fe0..0d56305c153e1f5b6d08ff094ead61c657edf3a3 100644 (file)
@@ -1616,26 +1616,26 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
        }
        case VIDIOC_ENCODER_CMD:
        {
-               struct v4l2_encoder_cmd *p=arg;
+               struct v4l2_encoder_cmd *p = arg;
 
                if (!vfd->vidioc_encoder_cmd)
                        break;
-               ret=vfd->vidioc_encoder_cmd(file, fh, p);
+               memset(&p->raw, 0, sizeof(p->raw));
+               ret = vfd->vidioc_encoder_cmd(file, fh, p);
                if (!ret)
-                       dbgarg (cmd, "cmd=%d, flags=%d\n",
-                                       p->cmd,p->flags);
+                       dbgarg(cmd, "cmd=%d, flags=%x\n", p->cmd, p->flags);
                break;
        }
        case VIDIOC_TRY_ENCODER_CMD:
        {
-               struct v4l2_encoder_cmd *p=arg;
+               struct v4l2_encoder_cmd *p = arg;
 
                if (!vfd->vidioc_try_encoder_cmd)
                        break;
-               ret=vfd->vidioc_try_encoder_cmd(file, fh, p);
+               memset(&p->raw, 0, sizeof(p->raw));
+               ret = vfd->vidioc_try_encoder_cmd(file, fh, p);
                if (!ret)
-                       dbgarg (cmd, "cmd=%d, flags=%d\n",
-                                       p->cmd,p->flags);
+                       dbgarg(cmd, "cmd=%d, flags=%x\n", p->cmd, p->flags);
                break;
        }
        case VIDIOC_G_PARM:
@@ -1738,12 +1738,17 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
        }
        case VIDIOC_G_SLICED_VBI_CAP:
        {
-               struct v4l2_sliced_vbi_cap *p=arg;
+               struct v4l2_sliced_vbi_cap *p = arg;
+               __u32 type = p->type;
+
                if (!vfd->vidioc_g_sliced_vbi_cap)
                        break;
-               ret=vfd->vidioc_g_sliced_vbi_cap(file, fh, p);
+               memset(p, 0, sizeof(*p));
+               p->type = type;
+               ret = vfd->vidioc_g_sliced_vbi_cap(file, fh, p);
                if (!ret)
-                       dbgarg (cmd, "service_set=%d\n", p->service_set);
+                       dbgarg(cmd, "type=%d, service_set=%d\n",
+                                       p->type, p->service_set);
                break;
        }
        case VIDIOC_LOG_STATUS: