* [PATCH] media: videobuf2: Fix device reference leak in vb2_dc_alloc error path @ 2025-10-28 6:44 ` Haotian Zhang 2025-10-28 7:10 ` Marek Szyprowski 0 siblings, 1 reply; 2+ messages in thread From: Haotian Zhang @ 2025-10-28 6:44 UTC (permalink / raw) To: tfiga, m.szyprowski, mchehab; +Cc: linux-media, linux-kernel, Haotian Zhang In vb2_dc_alloc(), get_device() is called to increment the device reference count. However, if subsequent DMA allocation fails (vb2_dc_alloc_coherent or vb2_dc_alloc_non_coherent returns error), the function returns without calling put_device(), causing a device reference leak. Add put_device() call in the error path before kfree() to properly release the device reference acquired earlier. Fixes: de27891f675e ("media: videobuf2: handle non-contiguous DMA allocations") Signed-off-by: Haotian Zhang <vulab@iscas.ac.cn> --- drivers/media/common/videobuf2/videobuf2-dma-contig.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c index a13ec569c82f..7123c5fae92c 100644 --- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c +++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c @@ -258,6 +258,7 @@ static void *vb2_dc_alloc(struct vb2_buffer *vb, if (ret) { dev_err(dev, "dma alloc of size %lu failed\n", size); + put_device(buf->dev); kfree(buf); return ERR_PTR(-ENOMEM); } -- 2.50.1.windows.1 ^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] media: videobuf2: Fix device reference leak in vb2_dc_alloc error path 2025-10-28 6:44 ` [PATCH] media: videobuf2: Fix device reference leak in vb2_dc_alloc error path Haotian Zhang @ 2025-10-28 7:10 ` Marek Szyprowski 0 siblings, 0 replies; 2+ messages in thread From: Marek Szyprowski @ 2025-10-28 7:10 UTC (permalink / raw) To: Haotian Zhang, tfiga, Mauro Carvalho Chehab, Hans Verkuil Cc: linux-media, linux-kernel On 28.10.2025 07:44, Haotian Zhang wrote: > In vb2_dc_alloc(), get_device() is called to increment the device > reference count. However, if subsequent DMA allocation fails > (vb2_dc_alloc_coherent or vb2_dc_alloc_non_coherent returns error), > the function returns without calling put_device(), causing a device > reference leak. > > Add put_device() call in the error path before kfree() to properly > release the device reference acquired earlier. > > Fixes: de27891f675e ("media: videobuf2: handle non-contiguous DMA allocations") > Signed-off-by: Haotian Zhang <vulab@iscas.ac.cn> Reviewed-by: Marek Szyprowski <m.szyprowski@samsung.com> > --- > drivers/media/common/videobuf2/videobuf2-dma-contig.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/media/common/videobuf2/videobuf2-dma-contig.c b/drivers/media/common/videobuf2/videobuf2-dma-contig.c > index a13ec569c82f..7123c5fae92c 100644 > --- a/drivers/media/common/videobuf2/videobuf2-dma-contig.c > +++ b/drivers/media/common/videobuf2/videobuf2-dma-contig.c > @@ -258,6 +258,7 @@ static void *vb2_dc_alloc(struct vb2_buffer *vb, > > if (ret) { > dev_err(dev, "dma alloc of size %lu failed\n", size); > + put_device(buf->dev); > kfree(buf); > return ERR_PTR(-ENOMEM); > } Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland ^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-10-28 7:10 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CGME20251028064507eucas1p2895db44758261941ca898cb4edd2c7b3@eucas1p2.samsung.com>
2025-10-28 6:44 ` [PATCH] media: videobuf2: Fix device reference leak in vb2_dc_alloc error path Haotian Zhang
2025-10-28 7:10 ` Marek Szyprowski
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®