OSDN Git Service

ALSA: usb-audio: Fix Oops by composite quirk enhancement
authorTakashi Iwai <tiwai@suse.de>
Mon, 10 Nov 2014 06:41:59 +0000 (07:41 +0100)
committerTakashi Iwai <tiwai@suse.de>
Mon, 10 Nov 2014 06:44:47 +0000 (07:44 +0100)
The quirk argument itself was used as iterator, so it cannot be taken
back to the original value, obviously.

Fixes: d4b8fc66f770 ('ALSA: usb-audio: Allow multiple entries for the same iface in composite quirk')
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/quirks.c

index e9ff3a6..809d7fa 100644 (file)
 static int create_composite_quirk(struct snd_usb_audio *chip,
                                  struct usb_interface *iface,
                                  struct usb_driver *driver,
-                                 const struct snd_usb_audio_quirk *quirk)
+                                 const struct snd_usb_audio_quirk *quirk_comp)
 {
        int probed_ifnum = get_iface_desc(iface->altsetting)->bInterfaceNumber;
+       const struct snd_usb_audio_quirk *quirk;
        int err;
 
-       for (quirk = quirk->data; quirk->ifnum >= 0; ++quirk) {
+       for (quirk = quirk_comp->data; quirk->ifnum >= 0; ++quirk) {
                iface = usb_ifnum_to_if(chip->dev, quirk->ifnum);
                if (!iface)
                        continue;
@@ -60,7 +61,7 @@ static int create_composite_quirk(struct snd_usb_audio *chip,
                        return err;
        }
 
-       for (quirk = quirk->data; quirk->ifnum >= 0; ++quirk) {
+       for (quirk = quirk_comp->data; quirk->ifnum >= 0; ++quirk) {
                iface = usb_ifnum_to_if(chip->dev, quirk->ifnum);
                if (!iface)
                        continue;