提交 a71eb602 编写于 作者: H Hangyu Hua 提交者: Mauro Carvalho Chehab

media: rga: fix possible memory leak in rga_probe

rga->m2m_dev needs to be freed when rga_probe fails.
Signed-off-by: NHangyu Hua <hbh25y@gmail.com>
Signed-off-by: NHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: NMauro Carvalho Chehab <mchehab@kernel.org>
上级 b4e1fb86
...@@ -865,7 +865,7 @@ static int rga_probe(struct platform_device *pdev) ...@@ -865,7 +865,7 @@ static int rga_probe(struct platform_device *pdev)
ret = pm_runtime_resume_and_get(rga->dev); ret = pm_runtime_resume_and_get(rga->dev);
if (ret < 0) if (ret < 0)
goto rel_vdev; goto rel_m2m;
rga->version.major = (rga_read(rga, RGA_VERSION_INFO) >> 24) & 0xFF; rga->version.major = (rga_read(rga, RGA_VERSION_INFO) >> 24) & 0xFF;
rga->version.minor = (rga_read(rga, RGA_VERSION_INFO) >> 20) & 0x0F; rga->version.minor = (rga_read(rga, RGA_VERSION_INFO) >> 20) & 0x0F;
...@@ -881,7 +881,7 @@ static int rga_probe(struct platform_device *pdev) ...@@ -881,7 +881,7 @@ static int rga_probe(struct platform_device *pdev)
DMA_ATTR_WRITE_COMBINE); DMA_ATTR_WRITE_COMBINE);
if (!rga->cmdbuf_virt) { if (!rga->cmdbuf_virt) {
ret = -ENOMEM; ret = -ENOMEM;
goto rel_vdev; goto rel_m2m;
} }
rga->src_mmu_pages = rga->src_mmu_pages =
...@@ -918,6 +918,8 @@ static int rga_probe(struct platform_device *pdev) ...@@ -918,6 +918,8 @@ static int rga_probe(struct platform_device *pdev)
free_dma: free_dma:
dma_free_attrs(rga->dev, RGA_CMDBUF_SIZE, rga->cmdbuf_virt, dma_free_attrs(rga->dev, RGA_CMDBUF_SIZE, rga->cmdbuf_virt,
rga->cmdbuf_phy, DMA_ATTR_WRITE_COMBINE); rga->cmdbuf_phy, DMA_ATTR_WRITE_COMBINE);
rel_m2m:
v4l2_m2m_release(rga->m2m_dev);
rel_vdev: rel_vdev:
video_device_release(vfd); video_device_release(vfd);
unreg_v4l2_dev: unreg_v4l2_dev:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册