From dc725297405e4c7277048b18f06ce25c4eeede7b Mon Sep 17 00:00:00 2001 From: Hu Kejun Date: Wed, 29 Aug 2018 11:43:28 +0800 Subject: [PATCH] media: rk-isp10: fix one vb is in queue.done_list twice vb with done state is can't added to stream.buf_queue when another stream is started, because this vb is in queue.done_list. Change-Id: I7b60d6941953509e5962efae723d36b516b4185c Signed-off-by: Hu Kejun --- drivers/media/platform/rk-isp10/cif_isp10_v4l2.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/rk-isp10/cif_isp10_v4l2.c b/drivers/media/platform/rk-isp10/cif_isp10_v4l2.c index e076da360f51..c7139dfa53c5 100644 --- a/drivers/media/platform/rk-isp10/cif_isp10_v4l2.c +++ b/drivers/media/platform/rk-isp10/cif_isp10_v4l2.c @@ -1306,12 +1306,14 @@ static void cif_isp10_v4l2_requeue_bufs( dev = to_cif_isp10_device(q); list_for_each_entry(buf, &q->queued_list, queued_entry) { + if (buf->state == VB2_BUF_STATE_DONE) + continue; + ispbuf = to_cif_isp10_vb(to_vb2_v4l2_buffer(buf)); if (!IS_ERR_VALUE(cif_isp10_qbuf( to_cif_isp10_device(q), stream_id, ispbuf))) { spin_lock(&dev->vbreq_lock); - if ((buf->state == VB2_BUF_STATE_QUEUED) || - (buf->state == VB2_BUF_STATE_DONE)) { + if (buf->state == VB2_BUF_STATE_QUEUED) { buf->state = VB2_BUF_STATE_ACTIVE; atomic_inc(&q->owned_by_drv_count); } else if (buf->state == VB2_BUF_STATE_ACTIVE) {