* and so they simplify the driver code.
  */
 
-/* The queue is busy if there is a owner and you are not that owner. */
-static inline bool vb2_queue_is_busy(struct video_device *vdev, struct file *file)
-{
-       return vdev->queue->owner && vdev->queue->owner != file->private_data;
-}
-
 /* vb2 ioctl helpers */
 
 int vb2_ioctl_reqbufs(struct file *file, void *priv,
        p->flags = flags;
        if (res)
                return res;
-       if (vb2_queue_is_busy(vdev, file))
+       if (vb2_queue_is_busy(vdev->queue, file))
                return -EBUSY;
        res = vb2_core_reqbufs(vdev->queue, p->memory, p->flags, &p->count);
        /* If count == 0, then the owner has released all buffers and he
                return res != -EBUSY ? res : 0;
        if (res)
                return res;
-       if (vb2_queue_is_busy(vdev, file))
+       if (vb2_queue_is_busy(vdev->queue, file))
                return -EBUSY;
 
        res = vb2_create_bufs(vdev->queue, p);
 {
        struct video_device *vdev = video_devdata(file);
 
-       if (vb2_queue_is_busy(vdev, file))
+       if (vb2_queue_is_busy(vdev->queue, file))
                return -EBUSY;
        return vb2_prepare_buf(vdev->queue, vdev->v4l2_dev->mdev, p);
 }
 {
        struct video_device *vdev = video_devdata(file);
 
-       if (vb2_queue_is_busy(vdev, file))
+       if (vb2_queue_is_busy(vdev->queue, file))
                return -EBUSY;
        return vb2_qbuf(vdev->queue, vdev->v4l2_dev->mdev, p);
 }
 {
        struct video_device *vdev = video_devdata(file);
 
-       if (vb2_queue_is_busy(vdev, file))
+       if (vb2_queue_is_busy(vdev->queue, file))
                return -EBUSY;
        return vb2_dqbuf(vdev->queue, p, file->f_flags & O_NONBLOCK);
 }
 {
        struct video_device *vdev = video_devdata(file);
 
-       if (vb2_queue_is_busy(vdev, file))
+       if (vb2_queue_is_busy(vdev->queue, file))
                return -EBUSY;
        return vb2_streamon(vdev->queue, i);
 }
 {
        struct video_device *vdev = video_devdata(file);
 
-       if (vb2_queue_is_busy(vdev, file))
+       if (vb2_queue_is_busy(vdev->queue, file))
                return -EBUSY;
        return vb2_streamoff(vdev->queue, i);
 }
 {
        struct video_device *vdev = video_devdata(file);
 
-       if (vb2_queue_is_busy(vdev, file))
+       if (vb2_queue_is_busy(vdev->queue, file))
                return -EBUSY;
        return vb2_expbuf(vdev->queue, p);
 }
                return -EINVAL;
        if (lock && mutex_lock_interruptible(lock))
                return -ERESTARTSYS;
-       if (vb2_queue_is_busy(vdev, file))
+       if (vb2_queue_is_busy(vdev->queue, file))
                goto exit;
        err = vb2_write(vdev->queue, buf, count, ppos,
                       file->f_flags & O_NONBLOCK);
                return -EINVAL;
        if (lock && mutex_lock_interruptible(lock))
                return -ERESTARTSYS;
-       if (vb2_queue_is_busy(vdev, file))
+       if (vb2_queue_is_busy(vdev->queue, file))
                goto exit;
        err = vb2_read(vdev->queue, buf, count, ppos,
                       file->f_flags & O_NONBLOCK);
 
  * The following functions are not part of the vb2 core API, but are simple
  * helper functions that you can use in your struct v4l2_file_operations,
  * struct v4l2_ioctl_ops and struct vb2_ops. They will serialize if vb2_queue->lock
- * or video_device->lock is set, and they will set and test vb2_queue->owner
- * to check if the calling filehandle is permitted to do the queuing operation.
+ * or video_device->lock is set, and they will set and test the queue owner
+ * (vb2_queue->owner) to check if the calling filehandle is permitted to do the
+ * queuing operation.
  */
 
+/**
+ * vb2_queue_is_busy() - check if the queue is busy
+ * @q:         pointer to &struct vb2_queue with videobuf2 queue.
+ * @file:      file through which the vb2 queue access is performed
+ *
+ * The queue is considered busy if it has an owner and the owner is not the
+ * @file.
+ *
+ * Queue ownership is acquired and checked by some of the v4l2_ioctl_ops helpers
+ * below. Drivers can also use this function directly when they need to
+ * open-code ioctl handlers, for instance to add additional checks between the
+ * queue ownership test and the call to the corresponding vb2 operation.
+ */
+static inline bool vb2_queue_is_busy(struct vb2_queue *q, struct file *file)
+{
+       return q->owner && q->owner != file->private_data;
+}
+
 /* struct v4l2_ioctl_ops helpers */
 
 int vb2_ioctl_reqbufs(struct file *file, void *priv,