diff mbox series

ASoC: soc-core: Fix regression causing sysfs entries to disappear

Message ID 20200730120715.637-1-ckeepax@opensource.cirrus.com (mailing list archive)
State Accepted
Commit 5c74c9d34aec1ac756de6979dd5580096aba8643
Headers show
Series ASoC: soc-core: Fix regression causing sysfs entries to disappear | expand

Commit Message

Charles Keepax July 30, 2020, 12:07 p.m. UTC
The allocation order of things in soc_new_pcm_runtime was changed to
move the device_register before the allocation of the rtd structure.
This was to allow the rtd allocation to be managed by devm. However
currently the sysfs entries are added by device_register and their
visibility depends on variables within the rtd structure, this causes
the pmdown_time and dapm_widgets sysfs entries to be missing for all
rtds.

Correct this issue by manually calling device_add_groups after the
appropriate information is available.

Fixes: d918a37610b1 ("ASoC: soc-core: tidyup soc_new_pcm_runtime() alloc order")
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
---
 sound/soc/soc-core.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

Comments

Mark Brown July 30, 2020, 10:28 p.m. UTC | #1
On Thu, 30 Jul 2020 13:07:14 +0100, Charles Keepax wrote:
> The allocation order of things in soc_new_pcm_runtime was changed to
> move the device_register before the allocation of the rtd structure.
> This was to allow the rtd allocation to be managed by devm. However
> currently the sysfs entries are added by device_register and their
> visibility depends on variables within the rtd structure, this causes
> the pmdown_time and dapm_widgets sysfs entries to be missing for all
> rtds.
> 
> [...]

Applied to

   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/1] ASoC: soc-core: Fix regression causing sysfs entries to disappear
      commit: 5c74c9d34aec1ac756de6979dd5580096aba8643

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/soc-core.c b/sound/soc/soc-core.c
index defd96b14c287..df4c7116f308c 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -446,7 +446,6 @@  static struct snd_soc_pcm_runtime *soc_new_pcm_runtime(
 
 	dev->parent	= card->dev;
 	dev->release	= soc_release_rtd_dev;
-	dev->groups	= soc_dev_attr_groups;
 
 	dev_set_name(dev, "%s", dai_link->name);
 
@@ -503,6 +502,10 @@  static struct snd_soc_pcm_runtime *soc_new_pcm_runtime(
 	/* see for_each_card_rtds */
 	list_add_tail(&rtd->list, &card->rtd_list);
 
+	ret = device_add_groups(dev, soc_dev_attr_groups);
+	if (ret < 0)
+		goto free_rtd;
+
 	return rtd;
 
 free_rtd: