From: Zhang Qilong <[email protected]>

[ Upstream commit 3952659a6108f77a0d062d8e8487bdbdaf52a66c ]

gb_pm_runtime_get_sync has increased the usage counter of the device here.
Forgetting to call gb_pm_runtime_put_noidle will result in usage counter
leak in the error branch of (gbcodec_hw_params and gbcodec_prepare). We
fixed it by adding it.

Fixes: c388ae7696992 ("greybus: audio: Update pm runtime support in dai_ops 
callback")
Signed-off-by: Zhang Qilong <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
 drivers/staging/greybus/audio_codec.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/staging/greybus/audio_codec.c 
b/drivers/staging/greybus/audio_codec.c
index 35acd55ca5ab7..6cbf69a57dfd9 100644
--- a/drivers/staging/greybus/audio_codec.c
+++ b/drivers/staging/greybus/audio_codec.c
@@ -489,6 +489,7 @@ static int gbcodec_hw_params(struct snd_pcm_substream 
*substream,
        if (ret) {
                dev_err_ratelimited(dai->dev, "%d: Error during set_config\n",
                                    ret);
+               gb_pm_runtime_put_noidle(bundle);
                mutex_unlock(&codec->lock);
                return ret;
        }
@@ -565,6 +566,7 @@ static int gbcodec_prepare(struct snd_pcm_substream 
*substream,
                break;
        }
        if (ret) {
+               gb_pm_runtime_put_noidle(bundle);
                mutex_unlock(&codec->lock);
                dev_err_ratelimited(dai->dev, "set_data_size failed:%d\n",
                                    ret);
-- 
2.27.0



Reply via email to