diff options
author | Takashi Iwai <tiwai@suse.de> | 2014-11-10 01:41:59 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2014-11-10 01:44:47 -0500 |
commit | 85a8181329a919d58b7ef99211251f47d5e1049e (patch) | |
tree | 846a21bf6dbc7e5c40eb1b9eebac4e030bd091fa | |
parent | 48b217aa43abc8c3545bb9b4d7a5b525b71d6ac2 (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.c | 7 |
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 @@ | |||
43 | static int create_composite_quirk(struct snd_usb_audio *chip, | 43 | static 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; |