diff mbox series

[resend,05/11] ASoC: soc-core: don't alloc memory carelessly when creating debugfs

Message ID 8736hw1lde.wl-kuninori.morimoto.gx@renesas.com (mailing list archive)
State New, archived
Headers show
Series ASoC: soc-core cleanup repost | expand

Commit Message

Kuninori Morimoto Aug. 20, 2019, 5:05 a.m. UTC
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

Current ALSA SoC might allocate debugfs name memory via kasprintf(),
but, it is unnecessary and the code becoming very complex.
Using local variable with appropriate size is enough.

This patch uses 64byte local variable for it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
---
v2 -> v3

	- add Ranjani's Reviewed-by

 sound/soc/soc-core.c | 22 +++++++++-------------
 1 file changed, 9 insertions(+), 13 deletions(-)

Comments

Mark Brown Aug. 22, 2019, 5:18 p.m. UTC | #1
On Tue, Aug 20, 2019 at 02:05:06PM +0900, Kuninori Morimoto wrote:

> Current ALSA SoC might allocate debugfs name memory via kasprintf(),
> but, it is unnecessary and the code becoming very complex.
> Using local variable with appropriate size is enough.

> This patch uses 64byte local variable for it.

Is it enough though?  It'd be a very long name but as soon as you
start putting a fixed limit in you're tempting fate a bit.

The other potential issue is that it's a relatively large
allocation to do on the stack and while we're probably fine it
still doesn't feel great.
diff mbox series

Patch

diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 0ed6576..6862abd 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -149,23 +149,19 @@  static const struct attribute_group *soc_dev_attr_groups[] = {
 #ifdef CONFIG_DEBUG_FS
 static void soc_init_component_debugfs(struct snd_soc_component *component)
 {
+	char name[64];
+
 	if (!component->card->debugfs_card_root)
 		return;
 
-	if (component->debugfs_prefix) {
-		char *name;
-
-		name = kasprintf(GFP_KERNEL, "%s:%s",
+	if (component->debugfs_prefix)
+		snprintf(name, ARRAY_SIZE(name), "%s:%s",
 			component->debugfs_prefix, component->name);
-		if (name) {
-			component->debugfs_root = debugfs_create_dir(name,
-				component->card->debugfs_card_root);
-			kfree(name);
-		}
-	} else {
-		component->debugfs_root = debugfs_create_dir(component->name,
-				component->card->debugfs_card_root);
-	}
+	else
+		snprintf(name, ARRAY_SIZE(name), "%s", component->name);
+
+	component->debugfs_root = debugfs_create_dir(name,
+					component->card->debugfs_card_root);
 
 	snd_soc_dapm_debugfs_init(snd_soc_component_get_dapm(component),
 		component->debugfs_root);