]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ALSA: usb-audio: Proper fallback at get_term_name()
authorTakashi Iwai <tiwai@suse.de>
Tue, 19 Dec 2017 12:38:23 +0000 (13:38 +0100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 19 Dec 2017 12:38:23 +0000 (13:38 +0100)
get_term_name() calls snd_usb_copy_string_desc() for retrieving the
name when a specific ID (name field) is given.  When this returns an
error (zero), however, it simply returns as is.  This will end up in a
fixed name string in the caller side, which often is meaningless.

For giving a bit more useful name string depending on the terminal
type, change the get_term_name() function to go through the fallback
mode.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/mixer.c

index 2b4ceda36291c01c6cca69d3a1cacd6c23014f40..9afb8ab524c7ebfc7979794b169105368a202fce 100644 (file)
@@ -656,10 +656,14 @@ static int get_term_name(struct mixer_build *state, struct usb_audio_term *iterm
                         unsigned char *name, int maxlen, int term_only)
 {
        struct iterm_name_combo *names;
+       int len;
 
-       if (iterm->name)
-               return snd_usb_copy_string_desc(state, iterm->name,
+       if (iterm->name) {
+               len = snd_usb_copy_string_desc(state, iterm->name,
                                                name, maxlen);
+               if (len)
+                       return len;
+       }
 
        /* virtual type - not a real terminal */
        if (iterm->type >> 16) {