Message ID | 20230914124725.17397-1-peter.ujfalusi@linux.intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | bb0216d4db9ecaa51af45d8504757becbe5c050d |
Headers | show |
Series | ASoC: SOF: sof-audio: Fix DSP core put imbalance on widget setup failure | expand |
On Thu, 14 Sep 2023 15:47:25 +0300, Peter Ujfalusi wrote: > In case the widget setup fails we should only decrement the core usage > count if the sof_widget_free_unlocked() has not been called as part of > the error handling. > sof_widget_free_unlocked() calls snd_sof_dsp_core_put() and the additional > core_put will cause imbalance in core usage count. > Use the existing use_count_decremented to handle this issue. > > [...] Applied to https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next Thanks! [1/1] ASoC: SOF: sof-audio: Fix DSP core put imbalance on widget setup failure commit: bb0216d4db9ecaa51af45d8504757becbe5c050d All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark
diff --git a/sound/soc/sof/sof-audio.c b/sound/soc/sof/sof-audio.c index e7ef77012c35..e5405f854a91 100644 --- a/sound/soc/sof/sof-audio.c +++ b/sound/soc/sof/sof-audio.c @@ -212,7 +212,8 @@ static int sof_widget_setup_unlocked(struct snd_sof_dev *sdev, sof_widget_free_unlocked(sdev, swidget); use_count_decremented = true; core_put: - snd_sof_dsp_core_put(sdev, swidget->core); + if (!use_count_decremented) + snd_sof_dsp_core_put(sdev, swidget->core); pipe_widget_free: if (swidget->id != snd_soc_dapm_scheduler) sof_widget_free_unlocked(sdev, swidget->spipe->pipe_widget);