diff mbox series

ASoC: SOF: sof-audio: Fix DSP core put imbalance on widget setup failure

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

Commit Message

Peter Ujfalusi Sept. 14, 2023, 12:47 p.m. UTC
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.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
---
 sound/soc/sof/sof-audio.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Mark Brown Sept. 15, 2023, 12:18 p.m. UTC | #1
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 mbox series

Patch

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);