/* Here is the only place where isoc get released */
        stk1160_uninit_isoc(dev);
 
-       stk1160_clear_queue(dev);
+       stk1160_clear_queue(dev, VB2_BUF_STATE_ERROR);
 
        video_unregister_device(&dev->vdev);
        v4l2_device_disconnect(&dev->v4l2_dev);
 
        stk1160_uninit_isoc(dev);
 out_stop_hw:
        usb_set_interface(dev->udev, 0, 0);
-       stk1160_clear_queue(dev);
+       stk1160_clear_queue(dev, VB2_BUF_STATE_QUEUED);
 
        mutex_unlock(&dev->v4l_lock);
 
 
        stk1160_stop_hw(dev);
 
-       stk1160_clear_queue(dev);
+       stk1160_clear_queue(dev, VB2_BUF_STATE_ERROR);
 
        stk1160_dbg("streaming stopped\n");
 
 /********************************************************************/
 
 /* Must be called with both v4l_lock and vb_queue_lock hold */
-void stk1160_clear_queue(struct stk1160 *dev)
+void stk1160_clear_queue(struct stk1160 *dev, enum vb2_buffer_state vb2_state)
 {
        struct stk1160_buffer *buf;
        unsigned long flags;
                buf = list_first_entry(&dev->avail_bufs,
                        struct stk1160_buffer, list);
                list_del(&buf->list);
-               vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
+               vb2_buffer_done(&buf->vb.vb2_buf, vb2_state);
                stk1160_dbg("buffer [%p/%d] aborted\n",
                            buf, buf->vb.vb2_buf.index);
        }
                buf = dev->isoc_ctl.buf;
                dev->isoc_ctl.buf = NULL;
 
-               vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
+               vb2_buffer_done(&buf->vb.vb2_buf, vb2_state);
                stk1160_dbg("buffer [%p/%d] aborted\n",
                            buf, buf->vb.vb2_buf.index);
        }
 
 int stk1160_vb2_setup(struct stk1160 *dev);
 int stk1160_video_register(struct stk1160 *dev);
 void stk1160_video_unregister(struct stk1160 *dev);
-void stk1160_clear_queue(struct stk1160 *dev);
+void stk1160_clear_queue(struct stk1160 *dev, enum vb2_buffer_state vb2_state);
 
 /* Provided by stk1160-video.c */
 int stk1160_alloc_isoc(struct stk1160 *dev);