aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2014-11-10 01:41:59 -0500
committerTakashi Iwai <tiwai@suse.de>2014-11-10 01:44:47 -0500
commit85a8181329a919d58b7ef99211251f47d5e1049e (patch)
tree846a21bf6dbc7e5c40eb1b9eebac4e030bd091fa
parent48b217aa43abc8c3545bb9b4d7a5b525b71d6ac2 (diff)
ALSA: usb-audio: Fix Oops by composite quirk enhancement
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>
-rw-r--r--sound/usb/quirks.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index e9ff3a6c60e4..809d7fab4633 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -43,12 +43,13 @@
43static int create_composite_quirk(struct snd_usb_audio *chip, 43static int create_composite_quirk(struct snd_usb_audio *chip,
44 struct usb_interface *iface, 44 struct usb_interface *iface,
45 struct usb_driver *driver, 45 struct usb_driver *driver,
46 const struct snd_usb_audio_quirk *quirk) 46 const struct snd_usb_audio_quirk *quirk_comp)
47{ 47{
48 int probed_ifnum = get_iface_desc(iface->altsetting)->bInterfaceNumber; 48 int probed_ifnum = get_iface_desc(iface->altsetting)->bInterfaceNumber;
49 const struct snd_usb_audio_quirk *quirk;
49 int err; 50 int err;
50 51
51 for (quirk = quirk->data; quirk->ifnum >= 0; ++quirk) { 52 for (quirk = quirk_comp->data; quirk->ifnum >= 0; ++quirk) {
52 iface = usb_ifnum_to_if(chip->dev, quirk->ifnum); 53 iface = usb_ifnum_to_if(chip->dev, quirk->ifnum);
53 if (!iface) 54 if (!iface)
54 continue; 55 continue;
@@ -60,7 +61,7 @@ static int create_composite_quirk(struct snd_usb_audio *chip,
60 return err; 61 return err;
61 } 62 }
62 63
63 for (quirk = quirk->data; quirk->ifnum >= 0; ++quirk) { 64 for (quirk = quirk_comp->data; quirk->ifnum >= 0; ++quirk) {
64 iface = usb_ifnum_to_if(chip->dev, quirk->ifnum); 65 iface = usb_ifnum_to_if(chip->dev, quirk->ifnum);
65 if (!iface) 66 if (!iface)
66 continue; 67 continue;