ALSA: usbmixer: bail out early when parsing audio class v2 descriptors
[linux-2.6.git] / sound / usb / usbmixer.c
index ca79495..42bb95c 100644 (file)
@@ -2258,7 +2258,8 @@ int snd_usb_create_mixer(struct snd_usb_audio *chip, int ctrlif,
        };
        struct usb_mixer_interface *mixer;
        struct snd_info_entry *entry;
-       int err;
+       struct usb_host_interface *host_iface;
+       int err, protocol;
 
        strcpy(chip->card->mixername, "USB Mixer");
 
@@ -2275,6 +2276,16 @@ int snd_usb_create_mixer(struct snd_usb_audio *chip, int ctrlif,
                return -ENOMEM;
        }
 
+       host_iface = &usb_ifnum_to_if(chip->dev, ctrlif)->altsetting[0];
+       protocol = host_iface->desc.bInterfaceProtocol;
+
+       /* FIXME! */
+       if (protocol != UAC_VERSION_1) {
+               snd_printk(KERN_WARNING "mixer interface protocol 0x%02x not yet supported\n",
+                                       protocol);
+               return 0;
+       }
+
        if ((err = snd_usb_mixer_controls(mixer)) < 0 ||
            (err = snd_usb_mixer_status_create(mixer)) < 0)
                goto _error;