Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85a81813 authored by Takashi Iwai's avatar Takashi Iwai
Browse files

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: d4b8fc66 ('ALSA: usb-audio: Allow multiple entries for the same iface in composite quirk')
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 48b217aa
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -43,12 +43,13 @@
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;