ASoC: sh: rz-ssi: Check return value of pm_runtime_resume_and_get()
authorHeiner Kallweit <hkallweit1@gmail.com>
Fri, 17 Dec 2021 09:22:31 +0000 (10:22 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 17 Dec 2021 16:21:17 +0000 (16:21 +0000)
The return value of pm_runtime_resume_and_get() needs to be checked to
avoid a usage count imbalance in the error case. This fix is basically
the same as 92c959bae2e5 ("reset: renesas: Fix Runtime PM usage"),
and the last step before pm_runtime_resume_and_get() can be annotated
as __must_check.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Link: https://lore.kernel.org/r/9fed506d-b780-55cd-45a4-9bd2407c910f@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sh/rz-ssi.c

index fa0cc08..e8d98b3 100644 (file)
@@ -1020,7 +1020,12 @@ static int rz_ssi_probe(struct platform_device *pdev)
 
        reset_control_deassert(ssi->rstc);
        pm_runtime_enable(&pdev->dev);
-       pm_runtime_resume_and_get(&pdev->dev);
+       ret = pm_runtime_resume_and_get(&pdev->dev);
+       if (ret < 0) {
+               pm_runtime_disable(ssi->dev);
+               reset_control_assert(ssi->rstc);
+               return dev_err_probe(ssi->dev, ret, "pm_runtime_resume_and_get failed\n");
+       }
 
        spin_lock_init(&ssi->lock);
        dev_set_drvdata(&pdev->dev, ssi);