diff options
author | Rui Miguel Silva <rui.silva@linaro.org> | 2018-02-21 11:14:25 +0000 |
---|---|---|
committer | Bryan O'Donoghue <bryan.odonoghue@linaro.org> | 2019-05-01 11:51:29 +0100 |
commit | c6e96f7c29570967fdc331ac5b468862131831ab (patch) | |
tree | cdd3b85bfa91ea6bdb6c02003cbfb2de8a87f84a | |
parent | 455bfec2f7402286cb5528526f4580ff20865f4a (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.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); } |