V4L/DVB (11267): cafe_ccic: Remove buffer type check from XXXbuf
authorTrent Piepho <xyzzy@speakeasy.org>
Sun, 29 Mar 2009 01:25:36 +0000 (22:25 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 30 Mar 2009 15:43:45 +0000 (12:43 -0300)
The v4l2-ioctl core only allows buffer types for which the corresponding
->vidioc_try_fmt_xxx() methods are defined to be used with
vidioc_(q|dq|query)bufs() and vidioc_reqbufs().

This driver only defines ->vidioc_try_fmt_vid_cap() so only VIDEO_CAPTURE
buffers are allowed to be used with cafe_vidioc_reqbufs(),
cafe_vidioc_querybuf(), cafe_vidioc_qbuf(), and cafe_vidioc_dqbuf().

The ->vidioc_(s|g|try|enum)_fmt_vid_cap() methods are only called on
VIDEO_CAPTURE buffers.  Thus, there is no need to check or set the buffer's
'type' field since it must already be set to VIDEO_CAPTURE.  So the
check in cafe_vidioc_enum_fmt_vid_cap() can be removed.

The 'index' field of v4l2_buffer is unsigned so the checks for it being
less than zero can be removed too.

Signed-off-by: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cafe_ccic.c

index 1c79369447f41346900eb8b91871c708c24cca23..7abe94d9fb4cd2dcccf73e588f197c35fd516f3e 100644 (file)
@@ -1151,8 +1151,6 @@ static int cafe_vidioc_reqbufs(struct file *filp, void *priv,
         * Make sure it's something we can do.  User pointers could be
         * implemented without great pain, but that's not been done yet.
         */
-       if (req->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               return -EINVAL;
        if (req->memory != V4L2_MEMORY_MMAP)
                return -EINVAL;
        /*
@@ -1216,9 +1214,7 @@ static int cafe_vidioc_querybuf(struct file *filp, void *priv,
        int ret = -EINVAL;
 
        mutex_lock(&cam->s_mutex);
-       if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               goto out;
-       if (buf->index < 0 || buf->index >= cam->n_sbufs)
+       if (buf->index >= cam->n_sbufs)
                goto out;
        *buf = cam->sb_bufs[buf->index].v4lbuf;
        ret = 0;
@@ -1236,9 +1232,7 @@ static int cafe_vidioc_qbuf(struct file *filp, void *priv,
        unsigned long flags;
 
        mutex_lock(&cam->s_mutex);
-       if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               goto out;
-       if (buf->index < 0 || buf->index >= cam->n_sbufs)
+       if (buf->index >= cam->n_sbufs)
                goto out;
        sbuf = cam->sb_bufs + buf->index;
        if (sbuf->v4lbuf.flags & V4L2_BUF_FLAG_QUEUED) {
@@ -1269,8 +1263,6 @@ static int cafe_vidioc_dqbuf(struct file *filp, void *priv,
        unsigned long flags;
 
        mutex_lock(&cam->s_mutex);
-       if (buf->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               goto out_unlock;
        if (cam->state != S_STREAMING)
                goto out_unlock;
        if (list_empty(&cam->sb_full) && filp->f_flags & O_NONBLOCK) {
@@ -1503,8 +1495,6 @@ static int cafe_vidioc_enum_fmt_vid_cap(struct file *filp,
        struct cafe_camera *cam = priv;
        int ret;
 
-       if (fmt->type != V4L2_BUF_TYPE_VIDEO_CAPTURE)
-               return -EINVAL;
        mutex_lock(&cam->s_mutex);
        ret = sensor_call(cam, video, enum_fmt, fmt);
        mutex_unlock(&cam->s_mutex);