mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
media: chips-media: wave5: Fix memory leak on codec_info allocation failure
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: 9707a6254a ("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>
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user