提交 34796bc0 编写于 作者: T Trent Piepho 提交者: Mauro Carvalho Chehab

V4L/DVB (11260): v4l2-ioctl: Check format for S_PARM and G_PARM

Return EINVAL if VIDIOC_S/G_PARM is called for a buffer type that the
driver doesn't define a ->vidioc_try_fmt_XXX() method for.  Several other
ioctls, like QUERYBUF, QBUF, and DQBUF, etc.  do this too.  It saves each
driver from having to check if the buffer type is one that it supports.
Signed-off-by: NTrent Piepho <xyzzy@speakeasy.org>
Signed-off-by: NMauro Carvalho Chehab <mchehab@redhat.com>
上级 3fd8ab30
......@@ -1551,6 +1551,9 @@ static long __video_do_ioctl(struct file *file,
struct v4l2_streamparm *p = arg;
if (ops->vidioc_g_parm) {
ret = check_fmt(ops, p->type);
if (ret)
break;
ret = ops->vidioc_g_parm(file, fh, p);
} else {
if (p->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
......@@ -1570,6 +1573,10 @@ static long __video_do_ioctl(struct file *file,
if (!ops->vidioc_s_parm)
break;
ret = check_fmt(ops, p->type);
if (ret)
break;
dbgarg(cmd, "type=%d\n", p->type);
ret = ops->vidioc_s_parm(file, fh, p);
break;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册