Skip to content

Commit

Permalink
ASoC: fix debugfs directory creation bug
Browse files Browse the repository at this point in the history
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: Russell King <rmk+kernel@arm.linux.org.uk>
Tested-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Mark Brown <broonie@linaro.org>
  • Loading branch information
Russell King authored and Mark Brown committed Jun 28, 2014
1 parent 7171511 commit e73f3de
Showing 1 changed file with 24 additions and 4 deletions.
28 changes: 24 additions & 4 deletions sound/soc/soc-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down Expand Up @@ -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");
Expand Down

0 comments on commit e73f3de

Please sign in to comment.