From 0d1a4ac9a5520fbea42ee88647958c731e88e1f4 Mon Sep 17 00:00:00 2001 From: Rui Miguel Silva Date: Wed, 21 Feb 2018 11:14:25 +0000 Subject: 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 --- drivers/staging/media/imx/imx7-media-csi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); } -- cgit v1.2.3