Oliver Neukum f62e31
From 5c0db68ce0faeb000c3540d095eb272d671a6e03 Mon Sep 17 00:00:00 2001
Oliver Neukum f62e31
From: Miaoqian Lin <linmq006@gmail.com>
Oliver Neukum f62e31
Date: Mon, 7 Mar 2022 08:52:06 +0100
Oliver Neukum f62e31
Subject: [PATCH] media: exynos4-is: Fix PM disable depth imbalance in
Oliver Neukum f62e31
 fimc_is_probe
Oliver Neukum f62e31
Git-commit: 5c0db68ce0faeb000c3540d095eb272d671a6e03
Oliver Neukum f62e31
References: git-fixes
Oliver Neukum f62e31
Patch-mainline: v5.19-rc1
Oliver Neukum f62e31
Oliver Neukum f62e31
If probe fails then we need to call pm_runtime_disable() to balance
Oliver Neukum f62e31
out the previous pm_runtime_enable() call.
Oliver Neukum f62e31
Oliver Neukum f62e31
Fixes: 9a761e436843 ("[media] exynos4-is: Add Exynos4x12 FIMC-IS driver")
Oliver Neukum f62e31
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Oliver Neukum f62e31
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
Oliver Neukum f62e31
Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
Oliver Neukum f62e31
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Oliver Neukum f62e31
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Oliver Neukum f62e31
Signed-off-by: Oliver Neukum <oneukum@suse.com>
Oliver Neukum f62e31
---
Oliver Neukum f62e31
 drivers/media/platform/samsung/exynos4-is/fimc-is.c | 4 +++-
Oliver Neukum f62e31
 1 file changed, 3 insertions(+), 1 deletion(-)
Oliver Neukum f62e31
Oliver Neukum f62e31
diff --git a/drivers/media/platform/samsung/exynos4-is/fimc-is.c b/drivers/media/platform/samsung/exynos4-is/fimc-is.c
Oliver Neukum f62e31
index e55e411038f4..81b290dace3a 100644
Oliver Neukum f62e31
--- a/drivers/media/platform/exynos4-is/fimc-is.c
Oliver Neukum f62e31
+++ b/drivers/media/platform/exynos4-is/fimc-is.c
Oliver Neukum f62e31
@@ -830,7 +830,7 @@ static int fimc_is_probe(struct platform_device *pdev)
Oliver Neukum f62e31
 
Oliver Neukum f62e31
 	ret = pm_runtime_resume_and_get(dev);
Oliver Neukum f62e31
 	if (ret < 0)
Oliver Neukum f62e31
-		goto err_irq;
Oliver Neukum f62e31
+		goto err_pm_disable;
Oliver Neukum f62e31
 
Oliver Neukum f62e31
 	vb2_dma_contig_set_max_seg_size(dev, DMA_BIT_MASK(32));
Oliver Neukum f62e31
 
Oliver Neukum f62e31
@@ -864,6 +864,8 @@ static int fimc_is_probe(struct platform_device *pdev)
Oliver Neukum f62e31
 	pm_runtime_put_noidle(dev);
Oliver Neukum f62e31
 	if (!pm_runtime_enabled(dev))
Oliver Neukum f62e31
 		fimc_is_runtime_suspend(dev);
Oliver Neukum f62e31
+err_pm_disable:
Oliver Neukum f62e31
+	pm_runtime_disable(dev);
Oliver Neukum f62e31
 err_irq:
Oliver Neukum f62e31
 	free_irq(is->irq, is);
Oliver Neukum f62e31
 err_clk:
Oliver Neukum f62e31
-- 
Oliver Neukum f62e31
2.35.3
Oliver Neukum f62e31