From: Rajendra Nayak <rna...@codeaurora.org>

[ Upstream commit 98cd831088c64aa8fe7e1d2a8bb94b6faba0462b ]

Post a successful pm_ops->core_get, an error in probe
should exit by doing a pm_ops->core_put which seems
to be missing. So fix it.

Signed-off-by: Rajendra Nayak <rna...@codeaurora.org>
Reviewed-by: Bjorn Andersson <bjorn.anders...@linaro.org>
Signed-off-by: Stanimir Varbanov <stanimir.varba...@linaro.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+hua...@kernel.org>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 drivers/media/platform/qcom/venus/core.c | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/media/platform/qcom/venus/core.c 
b/drivers/media/platform/qcom/venus/core.c
index 203c6538044fb..bfcaba37d60fe 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -224,13 +224,15 @@ static int venus_probe(struct platform_device *pdev)
 
        ret = dma_set_mask_and_coherent(dev, core->res->dma_mask);
        if (ret)
-               return ret;
+               goto err_core_put;
 
        if (!dev->dma_parms) {
                dev->dma_parms = devm_kzalloc(dev, sizeof(*dev->dma_parms),
                                              GFP_KERNEL);
-               if (!dev->dma_parms)
-                       return -ENOMEM;
+               if (!dev->dma_parms) {
+                       ret = -ENOMEM;
+                       goto err_core_put;
+               }
        }
        dma_set_max_seg_size(dev, DMA_BIT_MASK(32));
 
@@ -242,11 +244,11 @@ static int venus_probe(struct platform_device *pdev)
                                        IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
                                        "venus", core);
        if (ret)
-               return ret;
+               goto err_core_put;
 
        ret = hfi_create(core, &venus_core_ops);
        if (ret)
-               return ret;
+               goto err_core_put;
 
        pm_runtime_enable(dev);
 
@@ -302,6 +304,9 @@ static int venus_probe(struct platform_device *pdev)
        pm_runtime_set_suspended(dev);
        pm_runtime_disable(dev);
        hfi_destroy(core);
+err_core_put:
+       if (core->pm_ops->core_put)
+               core->pm_ops->core_put(dev);
        return ret;
 }
 
-- 
2.25.1

Reply via email to