Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: mediatek: vcodec: Fix a reference leak in mtk_vcodec_fw_vpu_init()

vpu_get_plat_device() increases the reference count of the returned
platform device. However, when devm_kzalloc() fails, the reference
is not released, causing a reference leak.

Fix this by calling put_device() on fw_pdev->dev before returning
on the error path.

Fixes: e25a89f743b1 ("media: mtk-vcodec: potential dereference of null pointer")
Cc: stable@vger.kernel.org
Signed-off-by: Haoxiang Li <haoxiang_li2024@163.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Reviewed-by: Tzung-Bi Shih <tzungbi@kernel.org>
Signed-off-by: Nicolas Dufresne <nicolas.dufresne@collabora.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>

authored by

Haoxiang Li and committed by
Hans Verkuil
cdd0f118 ae246b00

+3 -1
+3 -1
drivers/media/platform/mediatek/vcodec/common/mtk_vcodec_fw_vpu.c
··· 119 119 vpu_wdt_reg_handler(fw_pdev, mtk_vcodec_vpu_reset_enc_handler, priv, rst_id); 120 120 121 121 fw = devm_kzalloc(&plat_dev->dev, sizeof(*fw), GFP_KERNEL); 122 - if (!fw) 122 + if (!fw) { 123 + put_device(&fw_pdev->dev); 123 124 return ERR_PTR(-ENOMEM); 125 + } 124 126 fw->type = VPU; 125 127 fw->ops = &mtk_vcodec_vpu_msg; 126 128 fw->pdev = fw_pdev;