summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRui Miguel Silva <rui.silva@linaro.org>2018-02-21 11:14:25 +0000
committerRui Miguel Silva <rui.silva@linaro.org>2018-02-21 11:14:25 +0000
commit0d1a4ac9a5520fbea42ee88647958c731e88e1f4 (patch)
treedc8f523d2e058b092324699804eb8cac34a6562a
parent55e8d19ca5478aaf6a602901ff1c019d9e42123a (diff)
staging: media: imx7: fix buffer done in active queuembl_v4.14.12-3linaro-20180221-001
Do not mark buffer done if a buffer in active queue was in discard queue, this will trigger a NULL dereference. So, just remove it from the active buffers queue but not pass it to buffer done as it will be removed bellow in dma free. Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
-rw-r--r--drivers/staging/media/imx/imx7-media-csi.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/staging/media/imx/imx7-media-csi.c b/drivers/staging/media/imx/imx7-media-csi.c
index 33ad62edac4e..cfc29d4adbd2 100644
--- a/drivers/staging/media/imx/imx7-media-csi.c
+++ b/drivers/staging/media/imx/imx7-media-csi.c
@@ -889,7 +889,8 @@ static void imx7_stop_streaming(struct vb2_queue *vq)
internal.queue) {
list_del_init(&buf->internal.queue);
- if (buf->vb.vb2_buf.state == VB2_BUF_STATE_ACTIVE)
+ if (buf->vb.vb2_buf.state == VB2_BUF_STATE_ACTIVE &&
+ !buf->internal.discard)
vb2_buffer_done(&buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
}