On Wed May 20 10:10:41 2026 +0530, Anand Moon wrote:
> The vdec_open() function previously jumped directly to
> err_m2m_release when vdec_init_ctrls() failed, skipping
> release of the m2m context. This caused a resource leak.
>
> Fix it by introducing a proper err_m2m_ctx_release label
> that calls v4l2_m2m_ctx_release(sess->m2m_ctx) before
> releasing the m2m device.
>
> This was identified via kmemleak:
> unreferenced object 0xffff0000205d6878 (size 8):
> comm "v4l_id", pid 5289, jiffies 4294938580
> hex dump (first 8 bytes):
> 40 d2 49 18 00 00 ff ff @.I.....
> backtrace (crc d3204599):
> kmemleak_alloc+0xc8/0xf0
> __kvmalloc_node_noprof+0x60c/0x850
> v4l2_ctrl_handler_init_class+0x1b4/0x2e8 [videodev]
> vdec_open+0x1f4/0x788 [meson_vdec]
> v4l2_open+0x144/0x460 [videodev]
> chrdev_open+0x1ac/0x500
> do_dentry_open+0x3f0/0xfe8
> vfs_open+0x68/0x320
> do_open+0x2d8/0x9a8
> path_openat+0x1d0/0x4f0
> do_filp_open+0x190/0x380
> do_sys_openat2+0xf8/0x1b0
> __arm64_sys_openat+0x13c/0x1e8
> invoke_syscall+0xdc/0x268
> el0_svc_common.constprop.0+0x178/0x258
> do_el0_svc+0x4c/0x70
>
> Fixes: 3e7f51bd9607 ("media: meson: add v4l2 m2m video decoder driver")
> Cc: [email protected]
> Signed-off-by: Anand Moon <[email protected]>
> Signed-off-by: Nicolas Dufresne <[email protected]>
> Signed-off-by: Hans Verkuil <[email protected]>
Patch committed.
Thanks,
Hans Verkuil
drivers/staging/media/meson/vdec/vdec.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
---
diff --git a/drivers/staging/media/meson/vdec/vdec.c
b/drivers/staging/media/meson/vdec/vdec.c
index 4b77ec1af5a7..a039d925c0fe 100644
--- a/drivers/staging/media/meson/vdec/vdec.c
+++ b/drivers/staging/media/meson/vdec/vdec.c
@@ -889,7 +889,7 @@ static int vdec_open(struct file *file)
ret = vdec_init_ctrls(sess);
if (ret)
- goto err_m2m_release;
+ goto err_m2m_ctx_release;
sess->pixfmt_cap = formats[0].pixfmts_cap[0];
sess->fmt_out = &formats[0];
@@ -913,6 +913,8 @@ static int vdec_open(struct file *file)
return 0;
+err_m2m_ctx_release:
+ v4l2_m2m_ctx_release(sess->m2m_ctx);
err_m2m_release:
v4l2_m2m_release(sess->m2m_dev);
err_free_sess:
_______________________________________________
linuxtv-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]