return 0;
 }
 
+void uvc_queue_release(struct uvc_video_queue *queue)
+{
+       mutex_lock(&queue->mutex);
+       vb2_queue_release(&queue->queue);
+       mutex_unlock(&queue->mutex);
+}
+
 /* -----------------------------------------------------------------------------
  * V4L2 queue operations
  */
        return ret ? ret : rb->count;
 }
 
-void uvc_free_buffers(struct uvc_video_queue *queue)
-{
-       mutex_lock(&queue->mutex);
-       vb2_queue_release(&queue->queue);
-       mutex_unlock(&queue->mutex);
-}
-
 int uvc_query_buffer(struct uvc_video_queue *queue, struct v4l2_buffer *buf)
 {
        int ret;
 
        uvc_trace(UVC_TRACE_CALLS, "uvc_v4l2_release\n");
 
        /* Only free resources if this is a privileged handle. */
-       if (uvc_has_privileges(handle)) {
-               uvc_queue_enable(&stream->queue, 0);
-               uvc_free_buffers(&stream->queue);
-       }
+       if (uvc_has_privileges(handle))
+               uvc_queue_release(&stream->queue);
 
        /* Release the file handle. */
        uvc_dismiss_privileges(handle);
 
 /* Video buffers queue management. */
 extern int uvc_queue_init(struct uvc_video_queue *queue,
                enum v4l2_buf_type type, int drop_corrupted);
+extern void uvc_queue_release(struct uvc_video_queue *queue);
 extern int uvc_alloc_buffers(struct uvc_video_queue *queue,
                struct v4l2_requestbuffers *rb);
-extern void uvc_free_buffers(struct uvc_video_queue *queue);
 extern int uvc_query_buffer(struct uvc_video_queue *queue,
                struct v4l2_buffer *v4l2_buf);
 extern int uvc_create_buffers(struct uvc_video_queue *queue,