]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: chips-media: wave5: Fix memory leak on codec_info allocation failure
authorZilin Guan <zilin@seu.edu.cn>
Tue, 11 Nov 2025 14:57:06 +0000 (14:57 +0000)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Mon, 5 Jan 2026 14:56:31 +0000 (15:56 +0100)
In wave5_vpu_open_enc() and wave5_vpu_open_dec(), a vpu instance is
allocated via kzalloc(). If the subsequent allocation for inst->codec_info
fails, the functions return -ENOMEM without freeing the previously
allocated instance, causing a memory leak.

Fix this by calling kfree() on the instance in this error path to ensure
it is properly released.

Fixes: 9707a6254a8a6 ("media: chips-media: wave5: Add the v4l2 layer")
Signed-off-by: Zilin Guan <zilin@seu.edu.cn>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/platform/chips-media/wave5/wave5-vpu-dec.c
drivers/media/platform/chips-media/wave5/wave5-vpu-enc.c

index e75770912e21b8e9d5ed2b6103cc553e3cf7c341..8917542b993c62490751e5605debf6ec08649f0a 100644 (file)
@@ -1835,8 +1835,10 @@ static int wave5_vpu_open_dec(struct file *filp)
        INIT_LIST_HEAD(&inst->avail_src_bufs);
 
        inst->codec_info = kzalloc(sizeof(*inst->codec_info), GFP_KERNEL);
-       if (!inst->codec_info)
+       if (!inst->codec_info) {
+               kfree(inst);
                return -ENOMEM;
+       }
 
        v4l2_fh_init(&inst->v4l2_fh, vdev);
        v4l2_fh_add(&inst->v4l2_fh, filp);
index e69bef5d1b520c3698e82ce7418a18bea9d347ec..24fc0d0d3f4aa7e3039193efb2ba77173066e32c 100644 (file)
@@ -1581,8 +1581,10 @@ static int wave5_vpu_open_enc(struct file *filp)
        inst->ops = &wave5_vpu_enc_inst_ops;
 
        inst->codec_info = kzalloc(sizeof(*inst->codec_info), GFP_KERNEL);
-       if (!inst->codec_info)
+       if (!inst->codec_info) {
+               kfree(inst);
                return -ENOMEM;
+       }
 
        v4l2_fh_init(&inst->v4l2_fh, vdev);
        v4l2_fh_add(&inst->v4l2_fh, filp);