diff options
author | Rui Miguel Silva <rui.silva@linaro.org> | 2018-02-21 11:14:25 +0000 |
---|---|---|
committer | Rui Miguel Silva <rui.silva@linaro.org> | 2018-02-21 11:14:25 +0000 |
commit | 0d1a4ac9a5520fbea42ee88647958c731e88e1f4 (patch) | |
tree | dc8f523d2e058b092324699804eb8cac34a6562a | |
parent | 55e8d19ca5478aaf6a602901ff1c019d9e42123a (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.c | 3 |
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); } |