Skip to content

Commit

Permalink
ALSA: aloop: Fix initialization of controls
Browse files Browse the repository at this point in the history
commit 168632a upstream.

Add a control to the card before copying the id so that the numid field
is initialized in the copy. Otherwise the numid field of active_id,
format_id, rate_id and channels_id will be the same (0) and
snd_ctl_notify() will not queue the events properly.

Signed-off-by: Jonas Holmberg <jonashg@axis.com>
Reviewed-by: Jaroslav Kysela <perex@perex.cz>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20210407075428.2666787-1-jonashg@axis.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Jonas Holmberg authored and gregkh committed Apr 14, 2021
1 parent be52c39 commit 1aaef55
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions sound/drivers/aloop.c
Original file line number Diff line number Diff line change
Expand Up @@ -1572,6 +1572,14 @@ static int loopback_mixer_new(struct loopback *loopback, int notify)
return -ENOMEM;
kctl->id.device = dev;
kctl->id.subdevice = substr;

/* Add the control before copying the id so that
* the numid field of the id is set in the copy.
*/
err = snd_ctl_add(card, kctl);
if (err < 0)
return err;

switch (idx) {
case ACTIVE_IDX:
setup->active_id = kctl->id;
Expand All @@ -1588,9 +1596,6 @@ static int loopback_mixer_new(struct loopback *loopback, int notify)
default:
break;
}
err = snd_ctl_add(card, kctl);
if (err < 0)
return err;
}
}
}
Expand Down

0 comments on commit 1aaef55

Please sign in to comment.