]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/mediatek: clean up driver data initialisation
authorJohan Hovold <johan@kernel.org>
Fri, 29 Aug 2025 09:03:45 +0000 (11:03 +0200)
committerChun-Kuang Hu <chunkuang.hu@kernel.org>
Wed, 10 Sep 2025 12:52:59 +0000 (12:52 +0000)
The platform and drm devices are only used to look up the drm device and
its driver data respectively when initialising the driver data during
bind().

Drop the reference counts as soon as they have been used to make the
code more readable.

Note that the crtc count is never incremented on lookup failures.

Signed-off-by: Johan Hovold <johan@kernel.org>
Reviewed-by: CK Hu <ck.hu@mediatek.com>
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://patchwork.kernel.org/project/dri-devel/patch/20250829090345.21075-3-johan@kernel.org/
Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
drivers/gpu/drm/mediatek/mtk_drm_drv.c

index 76719eb5db09c0883a413560c574908f1ecaf012..eb5537f0ac90d87f59133c8e42e206d9ac62e050 100644 (file)
@@ -394,12 +394,14 @@ static bool mtk_drm_get_all_drm_priv(struct device *dev)
                        continue;
 
                drm_dev = device_find_child(&pdev->dev, NULL, mtk_drm_match);
+               put_device(&pdev->dev);
                if (!drm_dev)
-                       goto next_put_device_pdev_dev;
+                       continue;
 
                temp_drm_priv = dev_get_drvdata(drm_dev);
+               put_device(drm_dev);
                if (!temp_drm_priv)
-                       goto next_put_device_drm_dev;
+                       continue;
 
                if (temp_drm_priv->data->main_len)
                        all_drm_priv[CRTC_MAIN] = temp_drm_priv;
@@ -411,12 +413,6 @@ static bool mtk_drm_get_all_drm_priv(struct device *dev)
                if (temp_drm_priv->mtk_drm_bound)
                        cnt++;
 
-next_put_device_drm_dev:
-               put_device(drm_dev);
-
-next_put_device_pdev_dev:
-               put_device(&pdev->dev);
-
                if (cnt == MAX_CRTC) {
                        of_node_put(node);
                        break;