mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH] media: venus: fix use after free for registeredbufs
@ 2020-03-06  0:23 Jeffrey Kardatzke
  2020-03-06  9:03 ` Stanimir Varbanov
  0 siblings, 1 reply; 5+ messages in thread
From: Jeffrey Kardatzke @ 2020-03-06  0:23 UTC (permalink / raw)
  To: linux-media
  Cc: Stanimir Varbanov, Andy Gross, Mauro Carvalho Chehab,
	linux-arm-msm, linux-kernel, Jeffrey Kardatzke

In dynamic bufmode we do not manage the buffers in the registeredbufs
list, so do not add them there when they are initialized. Adding them
there was causing a use after free of the list_head struct in the buffer
when new buffers were allocated after existing buffers were freed.

Signed-off-by: Jeffrey Kardatzke <jkardatzke@google.com>
---
 drivers/media/platform/qcom/venus/helpers.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/media/platform/qcom/venus/helpers.c b/drivers/media/platform/qcom/venus/helpers.c
index bcc603804041..688a3593b49b 100644
--- a/drivers/media/platform/qcom/venus/helpers.c
+++ b/drivers/media/platform/qcom/venus/helpers.c
@@ -1054,8 +1054,10 @@ int venus_helper_vb2_buf_init(struct vb2_buffer *vb)
 	buf->size = vb2_plane_size(vb, 0);
 	buf->dma_addr = sg_dma_address(sgt->sgl);
 
-	if (vb->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE)
+	if (vb->type == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE &&
+	    !is_dynamic_bufmode(inst)) {
 		list_add_tail(&buf->reg_list, &inst->registeredbufs);
+	}
 
 	return 0;
 }
-- 
2.25.1.481.gfbce0eb801-goog


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2020-03-09 21:20 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-06  0:23 [PATCH] media: venus: fix use after free for registeredbufs Jeffrey Kardatzke
2020-03-06  9:03 ` Stanimir Varbanov
2020-03-06 20:10   ` Jeffrey Kardatzke
2020-03-07 17:24     ` Stanimir Varbanov
2020-03-09 21:19       ` Jeffrey Kardatzke

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®