[PATCH] ASoC: ti: davinci-mcasp: fix possible reference leak in __davinci_mcasp_set_clkdiv

Peter Ujfalusi peter.ujfalusi at ti.com
Mon Nov 2 09:20:32 CET 2020



On 30/10/2020 17.36, Zhang Qilong wrote:
> pm_runtime_get_sync() will increment pm usage counter whatever it
> does. Forgetting to call pm_runtime_put will result in reference
> leak in __davinci_mcasp_set_clkdiv, so we should fix it.

Acked-by: Peter Ujfalusi <peter.ujfalusi at ti.com>

> Signed-off-by: Zhang Qilong <zhangqilong3 at huawei.com>
> ---
>  sound/soc/ti/davinci-mcasp.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/soc/ti/davinci-mcasp.c b/sound/soc/ti/davinci-mcasp.c
> index a6b72ad53b43..4b46dd827f3f 100644
> --- a/sound/soc/ti/davinci-mcasp.c
> +++ b/sound/soc/ti/davinci-mcasp.c
> @@ -607,6 +607,8 @@ static int davinci_mcasp_set_dai_fmt(struct snd_soc_dai *cpu_dai,
>  static int __davinci_mcasp_set_clkdiv(struct davinci_mcasp *mcasp, int div_id,
>  				      int div, bool explicit)
>  {
> +	int ret = 0;
> +
>  	pm_runtime_get_sync(mcasp->dev);
>  	switch (div_id) {
>  	case MCASP_CLKDIV_AUXCLK:			/* MCLK divider */
> @@ -644,11 +646,11 @@ static int __davinci_mcasp_set_clkdiv(struct davinci_mcasp *mcasp, int div_id,
>  		break;
>  
>  	default:
> -		return -EINVAL;
> +		ret = -EINVAL;
>  	}
>  
>  	pm_runtime_put(mcasp->dev);
> -	return 0;
> +	return ret;
>  }
>  
>  static int davinci_mcasp_set_clkdiv(struct snd_soc_dai *dai, int div_id,
> 

- Péter

Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki


More information about the Alsa-devel mailing list