summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRui Miguel Silva <rui.silva@linaro.org>2018-02-21 11:14:25 +0000
committerBryan O'Donoghue <bryan.odonoghue@linaro.org>2019-05-01 11:51:29 +0100
commitc6e96f7c29570967fdc331ac5b468862131831ab (patch)
treecdd3b85bfa91ea6bdb6c02003cbfb2de8a87f84a
parent455bfec2f7402286cb5528526f4580ff20865f4a (diff)
staging: media: imx7: fix buffer done in active queue
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);
}