Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e73f3de5 authored by Russell King's avatar Russell King Committed by Mark Brown
Browse files

ASoC: fix debugfs directory creation bug



Avoid creating duplicate directories by prefixing codecs and platforms
with their separate identifiers.  This avoids snd-soc-dummy (which can
appear both as a dummy platform and a dummy codec on the same card)
from clashing.

Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
Tested-by: default avatarAndrew Lunn <andrew@lunn.ch>
Signed-off-by: default avatarMark Brown <broonie@linaro.org>
parent 7171511e
Loading
Loading
Loading
Loading
+24 −4
Original line number Diff line number Diff line
@@ -270,12 +270,32 @@ static const struct file_operations codec_reg_fops = {
	.llseek = default_llseek,
};

static struct dentry *soc_debugfs_create_dir(struct dentry *parent,
	const char *fmt, ...)
{
	struct dentry *de;
	va_list ap;
	char *s;

	va_start(ap, fmt);
	s = kvasprintf(GFP_KERNEL, fmt, ap);
	va_end(ap);

	if (!s)
		return NULL;

	de = debugfs_create_dir(s, parent);
	kfree(s);

	return de;
}

static void soc_init_codec_debugfs(struct snd_soc_codec *codec)
{
	struct dentry *debugfs_card_root = codec->card->debugfs_card_root;

	codec->debugfs_codec_root = debugfs_create_dir(codec->name,
						       debugfs_card_root);
	codec->debugfs_codec_root = soc_debugfs_create_dir(debugfs_card_root,
						"codec:%s", codec->name);
	if (!codec->debugfs_codec_root) {
		dev_warn(codec->dev,
			"ASoC: Failed to create codec debugfs directory\n");
@@ -306,8 +326,8 @@ static void soc_init_platform_debugfs(struct snd_soc_platform *platform)
{
	struct dentry *debugfs_card_root = platform->card->debugfs_card_root;

	platform->debugfs_platform_root = debugfs_create_dir(platform->name,
						       debugfs_card_root);
	platform->debugfs_platform_root = soc_debugfs_create_dir(debugfs_card_root,
						"platform:%s", platform->name);
	if (!platform->debugfs_platform_root) {
		dev_warn(platform->dev,
			"ASoC: Failed to create platform debugfs directory\n");