Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ASoC: img: Fix a reference count leak in img_i2s_in_set_fmt

pm_runtime_get_sync() increments the runtime PM usage counter even
when it returns an error code, causing incorrect ref count if
pm_runtime_put_noidle() is not called in error handling paths.
Thus call pm_runtime_put_noidle() if pm_runtime_get_sync() fails.

Signed-off-by: Qiushi Wu <wu000273@umn.edu>
Link: https://lore.kernel.org/r/20200614033749.2975-1-wu000273@umn.edu
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Qiushi Wu and committed by
Mark Brown
c4c59b95 c9015a17

+3 -1
+3 -1
sound/soc/img/img-i2s-in.c
··· 343 343 chan_control_mask = IMG_I2S_IN_CH_CTL_CLK_TRANS_MASK; 344 344 345 345 ret = pm_runtime_get_sync(i2s->dev); 346 - if (ret < 0) 346 + if (ret < 0) { 347 + pm_runtime_put_noidle(i2s->dev); 347 348 return ret; 349 + } 348 350 349 351 for (i = 0; i < i2s->active_channels; i++) 350 352 img_i2s_in_ch_disable(i2s, i);