diff options
author | Lad, Prabhakar <prabhakar.csengg@gmail.com> | 2014-03-23 02:37:25 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-04-16 17:26:47 -0400 |
commit | 8f7402a304bb80bcb5812353ef07189a1514554a (patch) | |
tree | 25defb08a9f8fb9b61a5a9e9db7bee8caad0c2df | |
parent | 933fd6e57d594ca9ae06894bb91d3fe067397dfa (diff) |
[media] staging: media: davinci: vpfe: release buffers in case start_streaming call back fails
this patch releases the buffer by calling vb2_buffer_done(),
with state marked as VB2_BUF_STATE_QUEUED if start_streaming()
call back fails.
Signed-off-by: Lad, Prabhakar <prabhakar.csengg@gmail.com>
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
-rw-r--r-- | drivers/staging/media/davinci_vpfe/vpfe_video.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/staging/media/davinci_vpfe/vpfe_video.c b/drivers/staging/media/davinci_vpfe/vpfe_video.c index c86ab8436c99..9337d92c5939 100644 --- a/drivers/staging/media/davinci_vpfe/vpfe_video.c +++ b/drivers/staging/media/davinci_vpfe/vpfe_video.c | |||
@@ -1218,8 +1218,16 @@ static int vpfe_start_streaming(struct vb2_queue *vq, unsigned int count) | |||
1218 | video->state = VPFE_VIDEO_BUFFER_QUEUED; | 1218 | video->state = VPFE_VIDEO_BUFFER_QUEUED; |
1219 | 1219 | ||
1220 | ret = vpfe_start_capture(video); | 1220 | ret = vpfe_start_capture(video); |
1221 | if (ret) | 1221 | if (ret) { |
1222 | struct vpfe_cap_buffer *buf, *tmp; | ||
1223 | |||
1224 | vb2_buffer_done(&video->cur_frm->vb, VB2_BUF_STATE_QUEUED); | ||
1225 | list_for_each_entry_safe(buf, tmp, &video->dma_queue, list) { | ||
1226 | list_del(&buf->list); | ||
1227 | vb2_buffer_done(&buf->vb, VB2_BUF_STATE_QUEUED); | ||
1228 | } | ||
1222 | goto unlock_out; | 1229 | goto unlock_out; |
1230 | } | ||
1223 | 1231 | ||
1224 | mutex_unlock(&video->lock); | 1232 | mutex_unlock(&video->lock); |
1225 | 1233 | ||