]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: mediatek: vcodec: Fix a reference leak in mtk_vcodec_fw_vpu_init()
authorHaoxiang Li <haoxiang_li2024@163.com>
Tue, 6 Jan 2026 00:31:47 +0000 (19:31 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:10:08 +0000 (13:10 +0100)
[ Upstream commit cdd0f118ef87db8a664fb5ea366fd1766d2df1cd ]

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>
[ adapted file path from common/ subdirectory and adjusted devm_kzalloc target from plat_dev->dev to dev->plat_dev->dev ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/platform/mtk-vcodec/mtk_vcodec_fw_vpu.c

index 1ec29f1b163a13a68cd4f3ed11be3d24b2218662..84efc824d267d5bf8f280441716a2092475d0cb0 100644 (file)
@@ -94,8 +94,10 @@ struct mtk_vcodec_fw *mtk_vcodec_fw_vpu_init(struct mtk_vcodec_dev *dev,
        vpu_wdt_reg_handler(fw_pdev, mtk_vcodec_vpu_reset_handler, dev, rst_id);
 
        fw = devm_kzalloc(&dev->plat_dev->dev, sizeof(*fw), GFP_KERNEL);
-       if (!fw)
+       if (!fw) {
+               put_device(&fw_pdev->dev);
                return ERR_PTR(-ENOMEM);
+       }
        fw->type = VPU;
        fw->ops = &mtk_vcodec_vpu_msg;
        fw->pdev = fw_pdev;