]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ALSA: jack: Improve string handling in jack_kctl_name_gen
authorThorsten Blum <thorsten.blum@linux.dev>
Sun, 25 Jan 2026 15:51:56 +0000 (16:51 +0100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 27 Jan 2026 08:58:37 +0000 (09:58 +0100)
If appending " Jack" is not necessary, replace snprintf("%s", ...) with
the faster strscpy().

Additionally, rename 'need_cat' to the clearer 'append_suf', use local
variables for the suffix and its length, remove the confusing comment,
compare strncmp() to 0, and use 'size_t' for the 'size' function
parameter.

Signed-off-by: Thorsten Blum <thorsten.blum@linux.dev>
Link: https://patch.msgid.link/20260125155159.98720-1-thorsten.blum@linux.dev
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/ctljack.c

index 709b1a9c2caa3d486062ec63892cedef3f2a806e..6b6ab34fbde89a6551eb634ce13c66922770d0e5 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <linux/kernel.h>
 #include <linux/export.h>
+#include <linux/string.h>
 #include <sound/core.h>
 #include <sound/control.h>
 
@@ -46,17 +47,20 @@ static int get_available_index(struct snd_card *card, const char *name)
        return sid.index;
 }
 
-static void jack_kctl_name_gen(char *name, const char *src_name, int size)
+static void jack_kctl_name_gen(char *name, const char *src_name, size_t size)
 {
        size_t count = strlen(src_name);
-       bool need_cat = true;
+       const char *suf = " Jack";
+       size_t suf_len = strlen(suf);
+       bool append_suf = true;
 
-       /* remove redundant " Jack" from src_name */
-       if (count >= 5)
-               need_cat = strncmp(&src_name[count - 5], " Jack", 5) ? true : false;
-
-       snprintf(name, size, need_cat ? "%s Jack" : "%s", src_name);
+       if (count >= suf_len)
+               append_suf = strncmp(&src_name[count - suf_len], suf, suf_len) != 0;
 
+       if (append_suf)
+               snprintf(name, size, "%s%s", src_name, suf);
+       else
+               strscpy(name, src_name, size);
 }
 
 struct snd_kcontrol *