|
@@ -916,9 +916,12 @@ void vb2_buffer_done(struct vb2_buffer *vb, enum vb2_buffer_state state)
|
|
|
dprintk(4, "done processing on buffer %d, state: %d\n",
|
|
|
vb->index, state);
|
|
|
|
|
|
- /* sync buffers */
|
|
|
- for (plane = 0; plane < vb->num_planes; ++plane)
|
|
|
- call_void_memop(vb, finish, vb->planes[plane].mem_priv);
|
|
|
+ if (state != VB2_BUF_STATE_QUEUED &&
|
|
|
+ state != VB2_BUF_STATE_REQUEUEING) {
|
|
|
+ /* sync buffers */
|
|
|
+ for (plane = 0; plane < vb->num_planes; ++plane)
|
|
|
+ call_void_memop(vb, finish, vb->planes[plane].mem_priv);
|
|
|
+ }
|
|
|
|
|
|
spin_lock_irqsave(&q->done_lock, flags);
|
|
|
if (state == VB2_BUF_STATE_QUEUED ||
|