On Sunday 29 March 2009 10:50:02 Patch from Trent Piepho wrote: > The patch number 11260 was added via Trent Piepho <xyzzy@xxxxxxxxxxxxx> > to http://linuxtv.org/hg/v4l-dvb master development tree. > > Kernel patches in this development tree may be modified to be backward > compatible with older kernels. Compatibility modifications will be > removed before inclusion into the mainstream Kernel > > If anyone has any objections, please let us know by sending a message to: > Linux Media Mailing List <linux-media@xxxxxxxxxxxxxxx> > > ------ > > From: Trent Piepho <xyzzy@xxxxxxxxxxxxx> > 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. Hi Trent, I wonder whether this change is correct. Looking at the spec I see that g/s_parm only supports VIDEO_CAPTURE, VIDEO_OUTPUT and PRIVATE or up. So what should happen if the type is VIDEO_OVERLAY? I think the g/s_parm implementation in v4l2-ioctl.c should first exclude the unsupported types before calling check_fmt. I also wonder whether check_fmt shouldn't check for the presence of the s_fmt callbacks instead of try_fmt since try_fmt is an optional ioctl. Regards, Hans > > Priority: normal > > Signed-off-by: Trent Piepho <xyzzy@xxxxxxxxxxxxx> > > > --- > > linux/drivers/media/video/v4l2-ioctl.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff -r 346bab8698ea -r 44632c5fe5b2 > linux/drivers/media/video/v4l2-ioctl.c --- > a/linux/drivers/media/video/v4l2-ioctl.c Sat Mar 28 18:25:35 2009 -0700 > +++ b/linux/drivers/media/video/v4l2-ioctl.c Sat Mar 28 18:25:35 2009 > -0700 @@ -1552,6 +1552,9 @@ static long __video_do_ioctl(struct 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) > @@ -1571,6 +1574,10 @@ static long __video_do_ioctl(struct 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; > > > --- > > Patch is available at: > http://linuxtv.org/hg/v4l-dvb/rev/44632c5fe5b2cd973c75501a88d61b43a39f6c4 >3 > > _______________________________________________ > linuxtv-commits mailing list > linuxtv-commits@xxxxxxxxxxx > http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits -- Hans Verkuil - video4linux developer - sponsored by TANDBERG -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html