BUG();
        }
 
-       mutex_lock(&fh->cap.lock);
-               kfree(fh->ov.clips);
+       mutex_lock(&fh->cap.vb_lock);
+       kfree(fh->ov.clips);
        fh->ov.clips    = clips;
        fh->ov.nclips   = n;
 
                bttv_overlay_risc(btv, &fh->ov, fh->ovfmt, new);
                retval = bttv_switch_overlay(btv,fh,new);
        }
-       mutex_unlock(&fh->cap.lock);
+       mutex_unlock(&fh->cap.vb_lock);
        return retval;
 }
 
        fmt = format_by_fourcc(f->fmt.pix.pixelformat);
 
        /* update our state informations */
-       mutex_lock(&fh->cap.lock);
+       mutex_lock(&fh->cap.vb_lock);
        fh->fmt              = fmt;
        fh->cap.field        = f->fmt.pix.field;
        fh->cap.last         = V4L2_FIELD_NONE;
        btv->init.fmt        = fmt;
        btv->init.width      = f->fmt.pix.width;
        btv->init.height     = f->fmt.pix.height;
-       mutex_unlock(&fh->cap.lock);
+       mutex_unlock(&fh->cap.vb_lock);
 
        return 0;
 }
        unsigned int i;
        struct bttv_fh *fh = priv;
 
-       mutex_lock(&fh->cap.lock);
+       mutex_lock(&fh->cap.vb_lock);
        retval = videobuf_mmap_setup(&fh->cap, gbuffers, gbufsize,
                                     V4L2_MEMORY_MMAP);
        if (retval < 0) {
-               mutex_unlock(&fh->cap.lock);
+               mutex_unlock(&fh->cap.vb_lock);
                return retval;
        }
 
        for (i = 0; i < gbuffers; i++)
                mbuf->offsets[i] = i * gbufsize;
 
-       mutex_unlock(&fh->cap.lock);
+       mutex_unlock(&fh->cap.vb_lock);
        return 0;
 }
 #endif
        if (!check_alloc_btres(btv, fh, RESOURCE_OVERLAY))
                return -EBUSY;
 
-       mutex_lock(&fh->cap.lock);
+       mutex_lock(&fh->cap.vb_lock);
        if (on) {
                fh->ov.tvnorm = btv->tvnorm;
                new = videobuf_pci_alloc(sizeof(*new));
 
        /* switch over */
        retval = bttv_switch_overlay(btv, fh, new);
-       mutex_unlock(&fh->cap.lock);
+       mutex_unlock(&fh->cap.vb_lock);
        return retval;
 }
 
        }
 
        /* ok, accept it */
-       mutex_lock(&fh->cap.lock);
+       mutex_lock(&fh->cap.vb_lock);
        btv->fbuf.base       = fb->base;
        btv->fbuf.fmt.width  = fb->fmt.width;
        btv->fbuf.fmt.height = fb->fmt.height;
                        retval = bttv_switch_overlay(btv, fh, new);
                }
        }
-       mutex_unlock(&fh->cap.lock);
+       mutex_unlock(&fh->cap.vb_lock);
        return retval;
 }
 
 
        fh->do_crop = 1;
 
-       mutex_lock(&fh->cap.lock);
+       mutex_lock(&fh->cap.vb_lock);
 
        if (fh->width < c.min_scaled_width) {
                fh->width = c.min_scaled_width;
                btv->init.height = c.max_scaled_height;
        }
 
-       mutex_unlock(&fh->cap.lock);
+       mutex_unlock(&fh->cap.vb_lock);
 
        return 0;
 }
                buf = list_entry(fh->cap.stream.next,struct bttv_buffer,vb.stream);
        } else {
                /* read() capture */
-               mutex_lock(&fh->cap.lock);
+               mutex_lock(&fh->cap.vb_lock);
                if (NULL == fh->cap.read_buf) {
                        /* need to capture a new frame */
-                       if (locked_btres(fh->btv,RESOURCE_VIDEO_STREAM)) {
-                               mutex_unlock(&fh->cap.lock);
-                               return POLLERR;
-                       }
+                       if (locked_btres(fh->btv,RESOURCE_VIDEO_STREAM))
+                               goto err;
                        fh->cap.read_buf = videobuf_pci_alloc(fh->cap.msize);
-                       if (NULL == fh->cap.read_buf) {
-                               mutex_unlock(&fh->cap.lock);
-                               return POLLERR;
-                       }
+                       if (NULL == fh->cap.read_buf)
+                               goto err;
                        fh->cap.read_buf->memory = V4L2_MEMORY_USERPTR;
                        field = videobuf_next_field(&fh->cap);
                        if (0 != fh->cap.ops->buf_prepare(&fh->cap,fh->cap.read_buf,field)) {
                                kfree (fh->cap.read_buf);
                                fh->cap.read_buf = NULL;
-                               mutex_unlock(&fh->cap.lock);
-                               return POLLERR;
+                               goto err;
                        }
                        fh->cap.ops->buf_queue(&fh->cap,fh->cap.read_buf);
                        fh->cap.read_off = 0;
                }
-               mutex_unlock(&fh->cap.lock);
+               mutex_unlock(&fh->cap.vb_lock);
                buf = (struct bttv_buffer*)fh->cap.read_buf;
        }
 
            buf->vb.state == VIDEOBUF_ERROR)
                return POLLIN|POLLRDNORM;
        return 0;
+err:
+       mutex_unlock(&fh->cap.vb_lock);
+       return POLLERR;
 }
 
 static int bttv_open(struct inode *inode, struct file *file)
 
           because vbi_fmt.end counts field lines times two. */
        end = max(frt->fmt.vbi.start[0], start1) * 2 + 2;
 
-       mutex_lock(&fh->vbi.lock);
+       mutex_lock(&fh->vbi.vb_lock);
 
        fh->vbi_fmt.fmt    = frt->fmt.vbi;
        fh->vbi_fmt.tvnorm = tvnorm;
        fh->vbi_fmt.end    = end;
 
-       mutex_unlock(&fh->vbi.lock);
+       mutex_unlock(&fh->vbi.vb_lock);
 
        rc = 0;
 
 
 
        dprintk("open minor=%d\n",minor);
        err = -EBUSY;
-       if (!mutex_trylock(&dev->empress_tsq.lock))
+       if (!mutex_trylock(&dev->empress_tsq.vb_lock))
                goto done;
        if (dev->empress_users)
                goto done_up;
        err = 0;
 
 done_up:
-       mutex_unlock(&dev->empress_tsq.lock);
+       mutex_unlock(&dev->empress_tsq.vb_lock);
 done:
        return err;
 }
 {
        struct saa7134_dev *dev = file->private_data;
 
-       mutex_lock(&dev->empress_tsq.lock);
+       mutex_lock(&dev->empress_tsq.vb_lock);
        videobuf_stop(&dev->empress_tsq);
        videobuf_mmap_free(&dev->empress_tsq);
        dev->empress_users--;
        saa_writeb(SAA7134_AUDIO_MUTE_CTRL,
                saa_readb(SAA7134_AUDIO_MUTE_CTRL) | (1 << 6));
 
-       mutex_unlock(&dev->empress_tsq.lock);
+       mutex_unlock(&dev->empress_tsq.vb_lock);
        return 0;
 }
 
 
                if (!list_empty(&fh->cap.stream))
                        buf = list_entry(fh->cap.stream.next, struct videobuf_buffer, stream);
        } else {
-               mutex_lock(&fh->cap.lock);
+               mutex_lock(&fh->cap.vb_lock);
                if (UNSET == fh->cap.read_off) {
                        /* need to capture a new frame */
-                       if (res_locked(fh->dev,RESOURCE_VIDEO)) {
-                               mutex_unlock(&fh->cap.lock);
-                               return POLLERR;
-                       }
-                       if (0 != fh->cap.ops->buf_prepare(&fh->cap,fh->cap.read_buf,fh->cap.field)) {
-                               mutex_unlock(&fh->cap.lock);
-                               return POLLERR;
-                       }
+                       if (res_locked(fh->dev,RESOURCE_VIDEO))
+                               goto err;
+                       if (0 != fh->cap.ops->buf_prepare(&fh->cap,fh->cap.read_buf,fh->cap.field))
+                               goto err;
                        fh->cap.ops->buf_queue(&fh->cap,fh->cap.read_buf);
                        fh->cap.read_off = 0;
                }
-               mutex_unlock(&fh->cap.lock);
+               mutex_unlock(&fh->cap.vb_lock);
                buf = fh->cap.read_buf;
        }
 
            buf->state == VIDEOBUF_ERROR)
                return POLLIN|POLLRDNORM;
        return 0;
+
+err:
+       mutex_unlock(&fh->cap.vb_lock);
+       return POLLERR;
 }
 
 static int video_release(struct inode *inode, struct file *file)
 
        /* Having implementations for abstract methods are mandatory */
        BUG_ON(!q->int_ops);
 
-       mutex_init(&q->lock);
+       mutex_init(&q->vb_lock);
        INIT_LIST_HEAD(&q->stream);
 }
 
        return 0;
 }
 
-/* Locking: Caller holds q->lock */
+/* Locking: Caller holds q->vb_lock */
 void videobuf_queue_cancel(struct videobuf_queue *q)
 {
        unsigned long flags = 0;
 
 /* --------------------------------------------------------------------- */
 
-/* Locking: Caller holds q->lock */
+/* Locking: Caller holds q->vb_lock */
 enum v4l2_field videobuf_next_field(struct videobuf_queue *q)
 {
        enum v4l2_field field = q->field;
        return field;
 }
 
-/* Locking: Caller holds q->lock */
+/* Locking: Caller holds q->vb_lock */
 static void videobuf_status(struct videobuf_queue *q, struct v4l2_buffer *b,
                            struct videobuf_buffer *vb, enum v4l2_buf_type type)
 {
        b->sequence  = vb->field_count >> 1;
 }
 
-/* Locking: Caller holds q->lock */
+/* Locking: Caller holds q->vb_lock */
 static int __videobuf_mmap_free(struct videobuf_queue *q)
 {
        int i;
 int videobuf_mmap_free(struct videobuf_queue *q)
 {
        int ret;
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        ret = __videobuf_mmap_free(q);
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
        return ret;
 }
 
-/* Locking: Caller holds q->lock */
+/* Locking: Caller holds q->vb_lock */
 static int __videobuf_mmap_setup(struct videobuf_queue *q,
                        unsigned int bcount, unsigned int bsize,
                        enum v4l2_memory memory)
                        enum v4l2_memory memory)
 {
        int ret;
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        ret = __videobuf_mmap_setup(q, bcount, bsize, memory);
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
        return ret;
 }
 
                return -EINVAL;
        }
 
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        if (req->type != q->type) {
                dprintk(1, "reqbufs: queue type invalid\n");
                retval = -EINVAL;
        req->count = retval;
 
  done:
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
        return retval;
 }
 
 {
        int ret = -EINVAL;
 
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        if (unlikely(b->type != q->type)) {
                dprintk(1, "querybuf: Wrong type.\n");
                goto done;
 
        ret = 0;
 done:
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
        return ret;
 }
 
        if (b->memory == V4L2_MEMORY_MMAP)
                down_read(¤t->mm->mmap_sem);
 
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        retval = -EBUSY;
        if (q->reading) {
                dprintk(1, "qbuf: Reading running...\n");
        retval = 0;
 
  done:
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
 
        if (b->memory == V4L2_MEMORY_MMAP)
                up_read(¤t->mm->mmap_sem);
 
        MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS);
 
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        retval = -EBUSY;
        if (q->reading) {
                dprintk(1, "dqbuf: Reading running...\n");
        videobuf_status(q, b, buf, q->type);
 
  done:
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
        return retval;
 }
 
        unsigned long flags = 0;
        int retval;
 
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        retval = -EBUSY;
        if (q->reading)
                goto done;
                spin_unlock_irqrestore(q->irqlock, flags);
 
  done:
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
        return retval;
 }
 
-/* Locking: Caller holds q->lock */
+/* Locking: Caller holds q->vb_lock */
 static int __videobuf_streamoff(struct videobuf_queue *q)
 {
        if (!q->streaming)
 {
        int retval;
 
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        retval = __videobuf_streamoff(q);
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
 
        return retval;
 }
 
-/* Locking: Caller holds q->lock */
+/* Locking: Caller holds q->vb_lock */
 static ssize_t videobuf_read_zerocopy(struct videobuf_queue *q,
                                      char __user *data,
                                      size_t count, loff_t *ppos)
 
        MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS);
 
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
 
        nbufs = 1; size = 0;
        q->ops->buf_setup(q, &nbufs, &size);
        }
 
  done:
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
        return retval;
 }
 
-/* Locking: Caller holds q->lock */
+/* Locking: Caller holds q->vb_lock */
 static int __videobuf_read_start(struct videobuf_queue *q)
 {
        enum v4l2_field field;
 {
        int rc;
 
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        rc = __videobuf_read_start(q);
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
 
        return rc;
 }
 
 void videobuf_read_stop(struct videobuf_queue *q)
 {
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        __videobuf_read_stop(q);
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
 }
 
 void videobuf_stop(struct videobuf_queue *q)
 {
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
 
        if (q->streaming)
                __videobuf_streamoff(q);
        if (q->reading)
                __videobuf_read_stop(q);
 
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
 }
 
 
        MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS);
 
        dprintk(2, "%s\n", __FUNCTION__);
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        retval = -EBUSY;
        if (q->streaming)
                goto done;
        }
 
  done:
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
        return retval;
 }
 
        struct videobuf_buffer *buf = NULL;
        unsigned int rc = 0;
 
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        if (q->streaming) {
                if (!list_empty(&q->stream))
                        buf = list_entry(q->stream.next,
                    buf->state == VIDEOBUF_ERROR)
                        rc = POLLIN|POLLRDNORM;
        }
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
        return rc;
 }
 
 
        MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS);
 
-       mutex_lock(&q->lock);
+       mutex_lock(&q->vb_lock);
        retval = CALL(q, mmap_mapper, q, vma);
        q->is_mmapped = 1;
-       mutex_unlock(&q->lock);
+       mutex_unlock(&q->vb_lock);
 
        return retval;
 }
 
        map->count--;
        if (0 == map->count) {
                dprintk(1,"munmap %p q=%p\n",map,q);
-               mutex_lock(&q->lock);
+               mutex_lock(&q->vb_lock);
                for (i = 0; i < VIDEO_MAX_FRAME; i++) {
                        if (NULL == q->bufs[i])
                                continue;
                        q->bufs[i]->baddr = 0;
                        q->ops->buf_release(q,q->bufs[i]);
                }
-               mutex_unlock(&q->lock);
+               mutex_unlock(&q->vb_lock);
                kfree(map);
        }
        return;
 
        map->count--;
        if (0 == map->count) {
                dprintk(1,"munmap %p q=%p\n",map,q);
-               mutex_lock(&q->lock);
+               mutex_lock(&q->vb_lock);
                for (i = 0; i < VIDEO_MAX_FRAME; i++) {
                        if (NULL == q->bufs[i])
                                continue;
                        q->bufs[i]->map   = NULL;
                        q->bufs[i]->baddr = 0;
                }
-               mutex_unlock(&q->lock);
+               mutex_unlock(&q->vb_lock);
                kfree(map);
        }
        return;
 
 };
 
 struct videobuf_queue {
-       struct mutex               lock;
+       struct mutex               vb_lock;
        spinlock_t                 *irqlock;
        void                       *dev; /* on pci, points to struct pci_dev */