From nobody Thu Oct 2 00:46:08 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AE636307AFB; Wed, 24 Sep 2025 14:40:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758724819; cv=none; b=FFOElc8h4/831LIfyHwpDrEgxNYE7YFbejsWrnPs97mOp5zZwCsF4u+Zu2E5bvPAsKnOmXvEgVLLQOcBiVAFmXyc3uaGO1Ycw921fVw1czu3Zc5oltexPDktFKnwSYfv9rlHOAFnEe5DD8724LMKZYB70lOxCEvFkTG7n1yyVVY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758724819; c=relaxed/simple; bh=4T26JdYYsM1e+t3tkUnI/PC5m7zquhrZvJn75mxBUl0=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=CRhntqeFm1IdG4WCaYswJfaaCOgudpZ6DjRFtQuptkEvR841TKqgIpebwgrRyLmQoZguTcZGgoAzmb/i/x7v6QGS8lxAh/yQ+cdv+YYArxuk6yTJeVDvqjyEQWCrAB4lme3IEQGq6bfqCREy+bP36LVajpFuqWVuwfx48Iyy2k4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=l7HITxtp; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="l7HITxtp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4305FC4CEF4; Wed, 24 Sep 2025 14:40:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758724818; bh=4T26JdYYsM1e+t3tkUnI/PC5m7zquhrZvJn75mxBUl0=; h=From:To:Cc:Subject:Date:From; b=l7HITxtpfw5v7AfGaQb2F4B2jNmtn0RMw5nDMlYyZh5CyjHb2YeLlgXAeHLhL6A1/ pCa06CyLgHxfv1Q5OCSyjeI7cyBVwYunS6Y7OQ5eCv1vfqoo0/+TwDreRuNvxlNtc6 JRMn+7PhugLkWlyK8dSlC93FrLVLwlCyInGq2IWS3V9lQ37ulUyuvJuE6X7IDS+1cO 8W0zWgbA6cpW7Non7OA+oc68DJtF0U0S4j7dKuBWIcF/XEE/DfBNwd0A1CaTwmPpAN K2/7StV3wfKP8Tamry23SHIdYVjkWvelRkNbgZD6w4P1V9dLAD8ednLAprAV/UbP5b yFYtrMfPTveMA== Received: from johan by xi.lan with local (Exim 4.98.2) (envelope-from ) id 1v1QfD-000000002vR-2p10; Wed, 24 Sep 2025 16:40:12 +0200 From: Johan Hovold To: Mauro Carvalho Chehab Cc: Matthias Brugger , AngeloGioacchino Del Regno , Hans Verkuil , linux-media@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, Johan Hovold , stable@vger.kernel.org, Moudy Ho Subject: [PATCH] media: platform: mtk-mdp3: fix device leaks at probe Date: Wed, 24 Sep 2025 16:39:19 +0200 Message-ID: <20250924143919.11183-1-johan@kernel.org> X-Mailer: git-send-email 2.49.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Make sure to drop the references taken when looking up the subsys devices during probe on probe failure (e.g. probe deferral) and on driver unbind. Similarly, drop the SCP device reference after retrieving its platform data during probe to avoid leaking it. Note that holding a reference to a device does not prevent its driver data from going away. Fixes: 61890ccaefaf ("media: platform: mtk-mdp3: add MediaTek MDP3 driver") Cc: stable@vger.kernel.org # 6.1 Cc: Moudy Ho Signed-off-by: Johan Hovold Reviewed-by: AngeloGioacchino Del Regno --- .../media/platform/mediatek/mdp3/mtk-mdp3-core.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c b/drivers= /media/platform/mediatek/mdp3/mtk-mdp3-core.c index 8de2c8e4d333..fc117a6a822c 100644 --- a/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c +++ b/drivers/media/platform/mediatek/mdp3/mtk-mdp3-core.c @@ -157,10 +157,18 @@ void mdp_video_device_release(struct video_device *vd= ev) kfree(mdp); } =20 +static void mdp_put_device(void *_dev) +{ + struct device *dev =3D _dev; + + put_device(dev); +} + static int mdp_mm_subsys_deploy(struct mdp_dev *mdp, enum mdp_infra_id id) { struct platform_device *mm_pdev =3D NULL; struct device **dev; + int ret; int i; =20 if (!mdp) @@ -194,6 +202,11 @@ static int mdp_mm_subsys_deploy(struct mdp_dev *mdp, e= num mdp_infra_id id) if (WARN_ON(!mm_pdev)) return -ENODEV; =20 + ret =3D devm_add_action_or_reset(&mdp->pdev->dev, mdp_put_device, + &mm_pdev->dev); + if (ret) + return ret; + *dev =3D &mm_pdev->dev; } =20 @@ -279,6 +292,7 @@ static int mdp_probe(struct platform_device *pdev) goto err_destroy_clock_wq; } mdp->scp =3D platform_get_drvdata(mm_pdev); + put_device(&mm_pdev->dev); } =20 mdp->rproc_handle =3D scp_get_rproc(mdp->scp); --=20 2.49.1