drm/exynos: Convert to platform remove callback returning void
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Wed, 8 Nov 2023 04:09:12 +0000 (13:09 +0900)
committerInki Dae <inki.dae@samsung.com>
Tue, 12 Dec 2023 04:06:36 +0000 (13:06 +0900)
The .remove() callback for a platform driver returns an int which makes
many driver authors wrongly assume it's possible to do error handling by
returning an error code. However the value returned is ignored (apart
from emitting a warning) and this typically results in resource leaks.

To improve here there is a quest to make the remove callback return
void. In the first step of this quest all drivers are converted to
.remove_new(), which already returns void. Eventually after all drivers
are converted, .remove_new() will be renamed to .remove().

Trivially convert this driver from always returning zero in the remove
callback to the void returning variant.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
fix merge conflict and drop duplicated patch description.
Signed-off-by: Inki Dae <inki.dae@samsung.com>
14 files changed:
drivers/gpu/drm/exynos/exynos5433_drm_decon.c
drivers/gpu/drm/exynos/exynos7_drm_decon.c
drivers/gpu/drm/exynos/exynos_dp.c
drivers/gpu/drm/exynos/exynos_drm_drv.c
drivers/gpu/drm/exynos/exynos_drm_fimc.c
drivers/gpu/drm/exynos/exynos_drm_fimd.c
drivers/gpu/drm/exynos/exynos_drm_g2d.c
drivers/gpu/drm/exynos/exynos_drm_gsc.c
drivers/gpu/drm/exynos/exynos_drm_mic.c
drivers/gpu/drm/exynos/exynos_drm_rotator.c
drivers/gpu/drm/exynos/exynos_drm_scaler.c
drivers/gpu/drm/exynos/exynos_drm_vidi.c
drivers/gpu/drm/exynos/exynos_hdmi.c
drivers/gpu/drm/exynos/exynos_mixer.c

index 4d986077738b9b61caad8720543137d6c2424bc1..776f2f0b602debb88a6c820add8d737332f2938e 100644 (file)
@@ -862,18 +862,16 @@ err_disable_pm_runtime:
        return ret;
 }
 
-static int exynos5433_decon_remove(struct platform_device *pdev)
+static void exynos5433_decon_remove(struct platform_device *pdev)
 {
        pm_runtime_disable(&pdev->dev);
 
        component_del(&pdev->dev, &decon_component_ops);
-
-       return 0;
 }
 
 struct platform_driver exynos5433_decon_driver = {
        .probe          = exynos5433_decon_probe,
-       .remove         = exynos5433_decon_remove,
+       .remove_new     = exynos5433_decon_remove,
        .driver         = {
                .name   = "exynos5433-decon",
                .pm     = pm_ptr(&exynos5433_decon_pm_ops),
index 0156a5e9443594711d9286f25e0d9ca747a02e7d..0d185c0564b911449cbbb8e199d37f53614af3c0 100644 (file)
@@ -765,7 +765,7 @@ err_iounmap:
        return ret;
 }
 
-static int decon_remove(struct platform_device *pdev)
+static void decon_remove(struct platform_device *pdev)
 {
        struct decon_context *ctx = dev_get_drvdata(&pdev->dev);
 
@@ -774,8 +774,6 @@ static int decon_remove(struct platform_device *pdev)
        iounmap(ctx->regs);
 
        component_del(&pdev->dev, &decon_component_ops);
-
-       return 0;
 }
 
 static int exynos7_decon_suspend(struct device *dev)
@@ -840,7 +838,7 @@ static DEFINE_RUNTIME_DEV_PM_OPS(exynos7_decon_pm_ops, exynos7_decon_suspend,
 
 struct platform_driver decon_driver = {
        .probe          = decon_probe,
-       .remove         = decon_remove,
+       .remove_new     = decon_remove,
        .driver         = {
                .name   = "exynos-decon",
                .pm     = pm_ptr(&exynos7_decon_pm_ops),
index 3404ec1367fb922d168969a63d41a4234900a4ea..ca31bad6c5760dd9429df203a8a3d1c20d722a9f 100644 (file)
@@ -250,14 +250,12 @@ out:
        return component_add(&pdev->dev, &exynos_dp_ops);
 }
 
-static int exynos_dp_remove(struct platform_device *pdev)
+static void exynos_dp_remove(struct platform_device *pdev)
 {
        struct exynos_dp_device *dp = platform_get_drvdata(pdev);
 
        component_del(&pdev->dev, &exynos_dp_ops);
        analogix_dp_remove(dp->adp);
-
-       return 0;
 }
 
 static int exynos_dp_suspend(struct device *dev)
@@ -285,7 +283,7 @@ MODULE_DEVICE_TABLE(of, exynos_dp_match);
 
 struct platform_driver dp_driver = {
        .probe          = exynos_dp_probe,
-       .remove         = exynos_dp_remove,
+       .remove_new     = exynos_dp_remove,
        .driver         = {
                .name   = "exynos-dp",
                .owner  = THIS_MODULE,
index 5380fb6c55ae1e3732b224ab27de84fa5ce0161d..7c59e1164a48368609403d5924bb9b7818428d70 100644 (file)
@@ -346,10 +346,9 @@ static int exynos_drm_platform_probe(struct platform_device *pdev)
                                               match);
 }
 
-static int exynos_drm_platform_remove(struct platform_device *pdev)
+static void exynos_drm_platform_remove(struct platform_device *pdev)
 {
        component_master_del(&pdev->dev, &exynos_drm_ops);
-       return 0;
 }
 
 static void exynos_drm_platform_shutdown(struct platform_device *pdev)
@@ -362,7 +361,7 @@ static void exynos_drm_platform_shutdown(struct platform_device *pdev)
 
 static struct platform_driver exynos_drm_platform_driver = {
        .probe  = exynos_drm_platform_probe,
-       .remove = exynos_drm_platform_remove,
+       .remove_new     = exynos_drm_platform_remove,
        .shutdown = exynos_drm_platform_shutdown,
        .driver = {
                .name   = "exynos-drm",
index 8de2714599fc54387537b69e0fd753da05597963..e81a576de3983a9a39393b8e1e3ed2b728ab9a75 100644 (file)
@@ -1367,7 +1367,7 @@ err_pm_dis:
        return ret;
 }
 
-static int fimc_remove(struct platform_device *pdev)
+static void fimc_remove(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
        struct fimc_context *ctx = get_fimc_context(dev);
@@ -1377,8 +1377,6 @@ static int fimc_remove(struct platform_device *pdev)
        pm_runtime_disable(dev);
 
        fimc_put_clocks(ctx);
-
-       return 0;
 }
 
 static int fimc_runtime_suspend(struct device *dev)
@@ -1410,7 +1408,7 @@ MODULE_DEVICE_TABLE(of, fimc_of_match);
 
 struct platform_driver fimc_driver = {
        .probe          = fimc_probe,
-       .remove         = fimc_remove,
+       .remove_new     = fimc_remove,
        .driver         = {
                .of_match_table = fimc_of_match,
                .name   = "exynos-drm-fimc",
index 8dde7b1e9b35d996f34afadb75701d4bc7cf5f62..a9f1c5c058940178c8318484fcea422f1428de69 100644 (file)
@@ -1277,13 +1277,11 @@ err_disable_pm_runtime:
        return ret;
 }
 
-static int fimd_remove(struct platform_device *pdev)
+static void fimd_remove(struct platform_device *pdev)
 {
        pm_runtime_disable(&pdev->dev);
 
        component_del(&pdev->dev, &fimd_component_ops);
-
-       return 0;
 }
 
 static int exynos_fimd_suspend(struct device *dev)
@@ -1325,7 +1323,7 @@ static DEFINE_RUNTIME_DEV_PM_OPS(exynos_fimd_pm_ops, exynos_fimd_suspend,
 
 struct platform_driver fimd_driver = {
        .probe          = fimd_probe,
-       .remove         = fimd_remove,
+       .remove_new     = fimd_remove,
        .driver         = {
                .name   = "exynos4-fb",
                .owner  = THIS_MODULE,
index 414e585ec7dd0b0561f338da1b24f623fe4462b0..f3138423612e61b229a6eaedb74cd758247d9f4e 100644 (file)
@@ -1530,7 +1530,7 @@ err_destroy_slab:
        return ret;
 }
 
-static int g2d_remove(struct platform_device *pdev)
+static void g2d_remove(struct platform_device *pdev)
 {
        struct g2d_data *g2d = platform_get_drvdata(pdev);
 
@@ -1545,8 +1545,6 @@ static int g2d_remove(struct platform_device *pdev)
        g2d_fini_cmdlist(g2d);
        destroy_workqueue(g2d->g2d_workq);
        kmem_cache_destroy(g2d->runqueue_slab);
-
-       return 0;
 }
 
 static int g2d_suspend(struct device *dev)
@@ -1609,7 +1607,7 @@ MODULE_DEVICE_TABLE(of, exynos_g2d_match);
 
 struct platform_driver g2d_driver = {
        .probe          = g2d_probe,
-       .remove         = g2d_remove,
+       .remove_new     = g2d_remove,
        .driver         = {
                .name   = "exynos-drm-g2d",
                .owner  = THIS_MODULE,
index 35771fb4e85d06402069a0e68d2fdf0a07606045..e9a769590415dcd0d7899df16254d7c20cdea8b1 100644 (file)
@@ -1309,15 +1309,13 @@ err_pm_dis:
        return ret;
 }
 
-static int gsc_remove(struct platform_device *pdev)
+static void gsc_remove(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
 
        component_del(dev, &gsc_component_ops);
        pm_runtime_dont_use_autosuspend(dev);
        pm_runtime_disable(dev);
-
-       return 0;
 }
 
 static int __maybe_unused gsc_runtime_suspend(struct device *dev)
@@ -1422,7 +1420,7 @@ MODULE_DEVICE_TABLE(of, exynos_drm_gsc_of_match);
 
 struct platform_driver gsc_driver = {
        .probe          = gsc_probe,
-       .remove         = gsc_remove,
+       .remove_new     = gsc_remove,
        .driver         = {
                .name   = "exynos-drm-gsc",
                .owner  = THIS_MODULE,
index 17bab5b1663ffaee9ef26a92c994a8f636d63f16..e2920960180fd33f813b717e9ec48cb3e78a4819 100644 (file)
@@ -442,7 +442,7 @@ err:
        return ret;
 }
 
-static int exynos_mic_remove(struct platform_device *pdev)
+static void exynos_mic_remove(struct platform_device *pdev)
 {
        struct exynos_mic *mic = platform_get_drvdata(pdev);
 
@@ -450,8 +450,6 @@ static int exynos_mic_remove(struct platform_device *pdev)
        pm_runtime_disable(&pdev->dev);
 
        drm_bridge_remove(&mic->bridge);
-
-       return 0;
 }
 
 static const struct of_device_id exynos_mic_of_match[] = {
@@ -462,7 +460,7 @@ MODULE_DEVICE_TABLE(of, exynos_mic_of_match);
 
 struct platform_driver mic_driver = {
        .probe          = exynos_mic_probe,
-       .remove         = exynos_mic_remove,
+       .remove_new     = exynos_mic_remove,
        .driver         = {
                .name   = "exynos-mic",
                .pm     = pm_ptr(&exynos_mic_pm_ops),
index ffb327c5139ece0762142039d75947472d9cb60f..5f7516655b08f4bca903620fb27d3d03ccf5d6f9 100644 (file)
@@ -329,15 +329,13 @@ err_component:
        return ret;
 }
 
-static int rotator_remove(struct platform_device *pdev)
+static void rotator_remove(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
 
        component_del(dev, &rotator_component_ops);
        pm_runtime_dont_use_autosuspend(dev);
        pm_runtime_disable(dev);
-
-       return 0;
 }
 
 static int rotator_runtime_suspend(struct device *dev)
@@ -453,7 +451,7 @@ static DEFINE_RUNTIME_DEV_PM_OPS(rotator_pm_ops, rotator_runtime_suspend,
 
 struct platform_driver rotator_driver = {
        .probe          = rotator_probe,
-       .remove         = rotator_remove,
+       .remove_new     = rotator_remove,
        .driver         = {
                .name   = "exynos-rotator",
                .owner  = THIS_MODULE,
index f2b8b09a6b4ecaf5a9bc78663a2db1d9d2244f24..392f721f13ab79899498325f4fb98f3a713eedfe 100644 (file)
@@ -539,15 +539,13 @@ err_ippdrv_register:
        return ret;
 }
 
-static int scaler_remove(struct platform_device *pdev)
+static void scaler_remove(struct platform_device *pdev)
 {
        struct device *dev = &pdev->dev;
 
        component_del(dev, &scaler_component_ops);
        pm_runtime_dont_use_autosuspend(dev);
        pm_runtime_disable(dev);
-
-       return 0;
 }
 
 static int clk_disable_unprepare_wrapper(struct clk *clk)
@@ -721,7 +719,7 @@ MODULE_DEVICE_TABLE(of, exynos_scaler_match);
 
 struct platform_driver scaler_driver = {
        .probe          = scaler_probe,
-       .remove         = scaler_remove,
+       .remove_new     = scaler_remove,
        .driver         = {
                .name   = "exynos-scaler",
                .owner  = THIS_MODULE,
index f5e1adfcaa514ee0a84b00b1c7357e7d43a64ecf..00382f28748ac0843653e1e1f1cf749590047468 100644 (file)
@@ -462,7 +462,7 @@ static int vidi_probe(struct platform_device *pdev)
        return component_add(dev, &vidi_component_ops);
 }
 
-static int vidi_remove(struct platform_device *pdev)
+static void vidi_remove(struct platform_device *pdev)
 {
        struct vidi_context *ctx = platform_get_drvdata(pdev);
 
@@ -472,13 +472,11 @@ static int vidi_remove(struct platform_device *pdev)
        }
 
        component_del(&pdev->dev, &vidi_component_ops);
-
-       return 0;
 }
 
 struct platform_driver vidi_driver = {
        .probe          = vidi_probe,
-       .remove         = vidi_remove,
+       .remove_new     = vidi_remove,
        .driver         = {
                .name   = "exynos-drm-vidi",
                .owner  = THIS_MODULE,
index dd9903eab563eee8537dfb731dca112f1dd53dea..43bed6cbaaea072e7c8860692739d4873a4d2c39 100644 (file)
@@ -2069,7 +2069,7 @@ err_ddc:
        return ret;
 }
 
-static int hdmi_remove(struct platform_device *pdev)
+static void hdmi_remove(struct platform_device *pdev)
 {
        struct hdmi_context *hdata = platform_get_drvdata(pdev);
 
@@ -2092,8 +2092,6 @@ static int hdmi_remove(struct platform_device *pdev)
        put_device(&hdata->ddc_adpt->dev);
 
        mutex_destroy(&hdata->mutex);
-
-       return 0;
 }
 
 static int __maybe_unused exynos_hdmi_suspend(struct device *dev)
@@ -2125,7 +2123,7 @@ static const struct dev_pm_ops exynos_hdmi_pm_ops = {
 
 struct platform_driver hdmi_driver = {
        .probe          = hdmi_probe,
-       .remove         = hdmi_remove,
+       .remove_new     = hdmi_remove,
        .driver         = {
                .name   = "exynos-hdmi",
                .owner  = THIS_MODULE,
index b302392ff0d7fbd7ee707ba1364b7e44ec74ffa8..6822333fd0e65453379e8f712de1d3a664c7d44d 100644 (file)
@@ -1258,13 +1258,11 @@ static int mixer_probe(struct platform_device *pdev)
        return ret;
 }
 
-static int mixer_remove(struct platform_device *pdev)
+static void mixer_remove(struct platform_device *pdev)
 {
        pm_runtime_disable(&pdev->dev);
 
        component_del(&pdev->dev, &mixer_component_ops);
-
-       return 0;
 }
 
 static int __maybe_unused exynos_mixer_suspend(struct device *dev)
@@ -1338,5 +1336,5 @@ struct platform_driver mixer_driver = {
                .of_match_table = mixer_match_types,
        },
        .probe = mixer_probe,
-       .remove = mixer_remove,
+       .remove_new = mixer_remove,
 };