summaryrefslogtreecommitdiffstats
path: root/drivers/staging/greybus
diff options
context:
space:
mode:
authorZhang Qilong <zhangqilong3@huawei.com>2020-11-09 21:13:46 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-11-13 15:34:07 +0100
commit3952659a6108f77a0d062d8e8487bdbdaf52a66c (patch)
tree29757e6aa923fd8ceeae9b011aa9dee1074c171a /drivers/staging/greybus
parentf4acd33c446b2ba97f1552a4da90050109d01ca7 (diff)
downloadlinux-3952659a6108f77a0d062d8e8487bdbdaf52a66c.tar.gz
linux-3952659a6108f77a0d062d8e8487bdbdaf52a66c.tar.bz2
linux-3952659a6108f77a0d062d8e8487bdbdaf52a66c.zip
staging: greybus: codecs: Fix reference counter leak in error handling
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 <zhangqilong3@huawei.com> Link: https://lore.kernel.org/r/20201109131347.1725288-2-zhangqilong3@huawei.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/greybus')
-rw-r--r--drivers/staging/greybus/audio_codec.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/staging/greybus/audio_codec.c b/drivers/staging/greybus/audio_codec.c
index 17a39ed63769..b589cf6b1d03 100644
--- a/drivers/staging/greybus/audio_codec.c
+++ b/drivers/staging/greybus/audio_codec.c
@@ -471,6 +471,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;
}
@@ -545,6 +546,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);
return ret;