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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Jun 2022 08:23:08 +0000 (10:23 +0200)
[ Upstream commit f04b4fb47d83b110a5b007fb2eddea862cfeb151 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
sound/soc/sh/rz-ssi.c

index 16de263..7379b14 100644 (file)
@@ -1025,7 +1025,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");
+       }
 
        ret = devm_snd_soc_register_component(&pdev->dev, &rz_ssi_soc_component,
                                              rz_ssi_soc_dai,