Message ID | 20210407075428.2666787-1-jonashg@axis.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 168632a495f49f33a18c2d502fc249d7610375e9 |
Headers | show |
Series | ALSA: aloop: Fix initialization of controls | expand |
Dne 07. 04. 21 v 9:54 Jonas Holmberg napsal(a): > 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> Nice hit. Thanks. Reviewed-by: Jaroslav Kysela <perex@perex.cz> > --- > sound/drivers/aloop.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/sound/drivers/aloop.c b/sound/drivers/aloop.c > index 52637180af33..80b814b9922a 100644 > --- a/sound/drivers/aloop.c > +++ b/sound/drivers/aloop.c > @@ -1571,6 +1571,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; > @@ -1587,9 +1595,6 @@ static int loopback_mixer_new(struct loopback *loopback, int notify) > default: > break; > } > - err = snd_ctl_add(card, kctl); > - if (err < 0) > - return err; > } > } > } >
On Wed, 07 Apr 2021 09:54:28 +0200, Jonas Holmberg wrote: > > 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> Applied now (with Cc to stable). thanks, Takashi > --- > sound/drivers/aloop.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/sound/drivers/aloop.c b/sound/drivers/aloop.c > index 52637180af33..80b814b9922a 100644 > --- a/sound/drivers/aloop.c > +++ b/sound/drivers/aloop.c > @@ -1571,6 +1571,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; > @@ -1587,9 +1595,6 @@ static int loopback_mixer_new(struct loopback *loopback, int notify) > default: > break; > } > - err = snd_ctl_add(card, kctl); > - if (err < 0) > - return err; > } > } > } > -- > 2.26.3 >
diff --git a/sound/drivers/aloop.c b/sound/drivers/aloop.c index 52637180af33..80b814b9922a 100644 --- a/sound/drivers/aloop.c +++ b/sound/drivers/aloop.c @@ -1571,6 +1571,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; @@ -1587,9 +1595,6 @@ static int loopback_mixer_new(struct loopback *loopback, int notify) default: break; } - err = snd_ctl_add(card, kctl); - if (err < 0) - return err; } } }
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> --- sound/drivers/aloop.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)